Пакет SDK для .NET использует меньший граф RID

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

Прежнее поведение

Пакет SDK для .NET использовал сложный граф RID для определения ресурсов при создании или публикации проекта.

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

Начиная с .NET 8 пакет SDK для .NET использует меньший граф, состоящий только из переносимых ИДЕНТИФИКАТОРов, для проектов, предназначенных для .NET 8 или более поздней версии. Это означает, что пакет SDK по умолчанию не распознает определяемые версией или дистрибутивные идентификаторы RID. При сборке проекта может появиться следующая ошибка (или аналогичная):

ошибка NETSDK1083: указанный объект RuntimeIdentifier win10-x64 не распознается. Дополнительные сведения см. в разделе https://aka.ms/netsdk1083.

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

.NET 8 RC 1

Тип критического изменения

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

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

Граф RID был дорогостоящим для поддержания и понимания, требуя от себя .NET быть дистрибутивом в хрупкой манере. Команда .NET и сообщество тратят нетривиальное время обновления графа и резервного копирования таких обновлений до предыдущих выпусков. Долгосрочная цель заключается в том, чтобы прекратить обновление графа RID, прекратить чтение и в конечном итоге удалить его. Это критическое изменение является шагом к этой цели.

Используйте переносимые идентификаторы, например, linux-<arch>, linux-musl-<arch>osx-<arch>иwin-<arch>, вместо определенных версий или дистрибутивов, например ubuntu.16.04-<arch>, osx.10.11-<arch>и win10-<arch>.

Если вы указываете RID с помощью свойства RuntimeIdentifier MSBuild в файле проекта (*.csproj, *.vbproj или *.fsproj), измените его соответствующим образом. Например, перейдите <RuntimeIdentifier>win10-x64</RuntimeIdentifier> в <RuntimeIdentifier>win-x64</RuntimeIdentifier> файл проекта:

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

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

Если необходимо отменить изменения к предыдущему поведению использования старого полного графа RID, можно задать UseRidGraph для свойства true MSBuild значение в файле проекта. Однако старый граф RID не будет обновлен в будущем, чтобы попытаться обрабатывать любые другие дистрибутивы или архитектуры.

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

См. также