Domyślne RID używane przy celowaniu w .NET Framework
Na platformie .NET 8 wprowadzono zmianę, aby używać mniejszego grafu identyfikatora środowiska uruchomieniowego (RID) podczas targetowania net8.0
i nowszych wersji.
Jednak to wpłynęło negatywnie na klientów, którzy celują równocześnie w .NET i .NET Framework. Dzieje się tak dlatego, że przywracanie odbywa się raz, ale projekt .NET Framework próbuje użyć starego domyślnego RID, a projekt .NET Core próbuje użyć nowej, zredukowanej struktury RID.
Aby umożliwić ten scenariusz wieloplatformowy, w tej sytuacji jest teraz używany domyślny identyfikator RID zgodny z nowym grafem RID.
Wersja wprowadzona
Ogólna dostępność platformy .NET 9
Poprzednie zachowanie
Projekty typu SDK przeznaczone dla platformy .NET Framework, które nie mają ustawionego identyfikatora RID, mają domyślną wartość win7-x86
lub win7-x64
.
Nowe zachowanie
Projekty SDK przeznaczone dla platformy .NET Framework bez ustawionego identyfikatora RID domyślnie mają wartość win-x86
lub win-x64
.
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na kompatybilność źródła.
Przyczyna zmiany
Aplikacje .NET Framework miały domyślny identyfikator RID, który był niezgodny z przenośnym grafem RID. Niezgodność spowodowała błąd przywracania:
Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): błąd NETSDK1047: plik zasobów "D:\1\s\artifacts\obj\MSBuild\project.assets.json" nie ma obiektu docelowego dla "net472/win7-x64". Upewnij się, że przywracanie zostało uruchomione i że element "net472" został dołączony do elementu TargetFrameworks dla projektu. Może być również konieczne dołączenie elementu "win7-x64" do listy RuntimeIdentifiers w projekcie. [MSBuild.csproj::TargetFramework=net472]>
Aby uzyskać więcej informacji, zobacz zgłoszenie w dotnet/sdk #35575.
Zalecana akcja
Jeśli jesteś dotknięty tą zmianą, wybierz jedną z następujących działań:
Zaktualizuj identyfikator środowiska uruchomieniowego do wartości obsługiwanej przez przenośny graf RID. Przykład pliku projektu:
<PropertyGroup> <RuntimeIdentifier>win-x64</RuntimeIdentifier> </PropertyGroup>
W przypadku określenia identyfikatora RID jako argumentu wiersza polecenia wprowadź podobną zmianę. Na przykład
dotnet publish --runtime win-x64
.Przełącz się z powrotem do starego grafu RID, ustawiając
UseRidGraph
natrue
w pliku projektu:<PropertyGroup> <UseRidGraph>true</UseRidGraph> </PropertyGroup>
Interfejsy API, których dotyczy problem
Żaden.