Бөлісу құралы:


Значение RID по умолчанию, используемое при нацеливании на платформу .NET Framework

В .NET 8 было введено изменение, чтобы использовать меньший граф идентификаторов среды выполнения (RID) при работе с net8.0 и более поздними версиями.

Однако это создало проблемы для пользователей, которые используют несколько версий .NET и .NET Framework. Это связано с тем, что восстановление происходит один раз, но проект .NET Framework пытается использовать старый параметр RID по умолчанию, а проект .NET (Core) пытается использовать новый сокращенный граф RID.

Чтобы включить этот сценарий многократного целевого назначения, теперь используется RID по умолчанию, совместимый с новым графом RID.

Представленная версия

Общедоступная версия .NET 9

Предыдущее поведение

Проекты в стиле SDK, предназначенные для .NET Framework без заданного RID, по умолчанию использовали win7-x86 или win7-x64.

Новое поведение

Проекты в стиле SDK, предназначенные для .NET Framework без указания RID, по умолчанию используют win-x86 или win-x64.

Тип ломающего изменения

Это изменение может повлиять на совместимость источников.

Причина изменения

Приложения .NET Framework получили стандартный RID, несовместимый с переносимым графом RID. Эта несовместимость привела к ошибке восстановления:

Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): ошибка NETSDK1047: файл ресурсов Assets 'D:\1\s\artifacts\obj\MSBuild\project.assets.json' не имеет цели для 'net472/win7-x64'. Убедитесь, что восстановление выполнено и что вы включили net472 в targetFrameworks для проекта. Также может потребоваться включить 'win7-x64' в Идентификаторы среды выполнения проекта. [MSBuild.csproj::TargetFramework=net472]>

Дополнительные сведения см. в статье проблема dotnet/sdk #35575.

Если это изменение затрагивает вас, выберите одно из следующих действий:

  • Обновите идентификатор среды выполнения до значения, поддерживаемого переносимым графом RID. Пример файла проекта:

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

    Если в качестве аргумента командной строки указать RID, сделайте аналогичное изменение. Например, dotnet publish --runtime win-x64.

  • Вернитесь к старому графу RID, установив в файле проекта для UseRidGraph значение true.

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

Затронутые API

Нет.