.NET SDK'sı daha küçük bir RID grafı kullanıyor

.NET 8 veya sonraki sürümleri hedefleyen projeler artık daha küçük, "taşınabilir" bir çalışma zamanı tanımlayıcısı (RID) grafı kullanıyor.

Önceki davranış

.NET SDK'sı, proje oluştururken veya yayımlarken varlıkları belirlemek için karmaşık bir RID grafiği kullanır.

Yeni davranış

.NET 8'den başlayarak .NET SDK'sı, .NET 8 veya sonraki bir sürümü hedefleyen projeler için yalnızca taşınabilir RID'lerden oluşan daha küçük bir grafik kullanır. Bu, SDK'nın sürüme özgü veya dağıtıma özgü RID'leri varsayılan olarak tanıymayacağı anlamına gelir. Projenizi oluştururken aşağıdaki hatayı (veya benzerini) görebilirsiniz:

hata NETSDK1083: Belirtilen RuntimeIdentifier 'win10-x64' tanınmıyor. Daha fazla bilgi edinmek için bkz. https://aka.ms/netsdk1083.

Sürüm kullanıma sunulmuştur

.NET 8 RC 1

Hataya neden olan değişikliğin türü

Bu değişiklik davranışsal bir değişikliktir ve kaynak uyumluluğunu da etkileyebilir.

Değişiklik nedeni

RID grafiğinin bakımı ve anlaşılması maliyetliydi ve .NET'in kendisini kırılgan bir şekilde dağıtıma duyarlı hale getirmek gerekti. .NET ekibi ve topluluk, grafı güncelleştirmek ve bu tür güncelleştirmeleri önceki sürümlere geri aktarmak için önemsiz bir süre harcar. Uzun vadeli hedef, RID grafiğini güncelleştirmeyi durdurmak, okumayı durdurmak ve sonunda kaldırmaktır. Bu hataya neden olan değişiklik, bu hedefe yönelik bir adımdır.

, ve win-<arch>gibi sürüme özgü veya dağıtıma özgü RID'ler linux-<arch>osx-<arch>linux-musl-<arch>yerine , , ve win10-<arch>gibi ubuntu.16.04-<arch>osx.10.11-<arch>taşınabilir RID'leri kullanın.

RID'yi proje dosyanızda RuntimeIdentifier MSBuild özelliğini (*.csproj, *.vbproj veya *.fsproj) kullanarak belirtirseniz, uygun şekilde değiştirin. Örneğin, proje dosyanızda olarak <RuntimeIdentifier>win-x64</RuntimeIdentifier> değiştirin<RuntimeIdentifier>win10-x64</RuntimeIdentifier>:

<PropertyGroup>
  ...
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>

RID'yi komut satırı bağımsız değişkeni olarak belirtirseniz, benzer bir değişiklik yapın. Örneğin, yerine dotnet publish --framework net8.0 --runtime win10-x64komutunu dotnet publish --framework net8.0 --runtime win-x64kullanın.

Eski, tam RID grafiğini kullanmanın önceki davranışına geri dönmeniz gerekiyorsa, proje dosyanızda MSBuild özelliğini olarak true ayarlayabilirsinizUseRidGraph. Ancak, eski RID grafiği gelecekte diğer dağıtımları veya mimarileri işlemeye çalışmak için güncelleştirilmeyecektir.

<PropertyGroup>
  <UseRidGraph>true</UseRidGraph>
</PropertyGroup>

Ayrıca bkz.