Udostępnij za pośrednictwem


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.

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 na true w pliku projektu:

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

Interfejsy API, których dotyczy problem

Żaden.