.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.
Önerilen eylem
, 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-x64
komutunu dotnet publish --framework net8.0 --runtime win-x64
kullanı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>