Значение 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
Нет.