manus-skills/.kortix/opencode/skills/coding/migrate-dotnet9-to-dotnet10/references/sdk-msbuild-dotnet9to10.md
zhukang 1c7abd81d1 All 310 Manus skill-hub community skills as a Kortix marketplace registry
- 310 registry:skill items, 1528 files, 7 categories (hub tags)
- registry.json generated by @kortix/registry buildRegistry
- nested SKILL.md in sn-da-* renamed SUBSKILL.md (no phantom skills)
- provenance + licenses: SOURCES.md
2026-09-15 13:37:20 +08:00

2.4 KiB

SDK and MSBuild Breaking Changes (.NET 10)

These changes affect the .NET SDK, CLI tooling, NuGet, and MSBuild behavior.

Source-Incompatible Changes

NU1510 raised for direct references pruned by NuGet

If NuGet prunes a direct PackageReference because the package is already part of the shared framework, a NU1510 warning is raised. Remove the explicit reference if it's provided by the framework.

PackageReference without a version raises an error

Every <PackageReference> must now have a Version attribute or use Central Package Management. Missing versions raise an error instead of resolving to the latest.

Other source-incompatible changes

  • dnx.ps1 file removed from .NET SDK — remove any references
  • File-level directives (#r, #load) no longer accept double-quoted paths — remove the quotes (e.g., #r MyLib.dll instead of #r "MyLib.dll")
  • project.json no longer recognized by dotnet restore — use PackageReference format
  • NuGet packages with no runtime assets excluded from deps.json
  • ToolCommandName not set for non-tool packages
  • HTTP sources in dotnet package list/dotnet package search now error (use HTTPS)

Behavioral Changes

dotnet new sln defaults to SLNX file format

dotnet new sln now generates an XML-based .slnx file instead of the classic .sln format:

<Solution>
</Solution>

Mitigation: Use dotnet new sln --format sln for the classic format. Ensure your tooling (Visual Studio, Rider, etc.) supports SLNX.

Other behavioral changes

  • --interactive defaults to true in user scenarios — use --interactive false in scripts
  • CLI diagnostic output now goes to stderr
  • Tool packages now include RID-specific content
  • Default workload management mode is 'workload sets' (not 'loose manifests')
  • EnableDynamicNativeInstrumentation defaults to false for code coverage
  • dotnet package list performs restore before listing
  • dotnet tool install --local creates manifest by default
  • dotnet watch logs to stderr instead of stdout
  • PrunePackageReference privatizes direct prunable references (PrivateAssets="All")
  • SHA-1 fingerprints deprecated in dotnet nuget sign — use SHA-256
  • MSBUILDCUSTOMBUILDEVENTWARNING escape hatch removed
  • MSBuild custom culture resource handling changed
  • NUGET_ENABLE_ENHANCED_HTTP_RETRY env var removed (enhanced retry always on)
  • NuGet logs errors for invalid package IDs