Поделиться через


Появление предупреждения для RuntimeIdentifier, если не указана автономность

Если в файле проекта указан атрибут RuntimeIdentifier или параметр -r со значением dotnet, то пакет SDK для .NET по умолчанию настраивает сборку, публикацию и выходные данные запуска так, чтобы получить автономное приложение. По умолчанию, если атрибут RuntimeIdentifier не указан, создается зависящее от платформы приложение. Это изменение вводит новое предупреждение NETSDK1179, которое появляется при наличии RuntimeIdentifier без указания, является ли приложение автономным.

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

.NET 6 RC 1

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

В предыдущих версиях при наличии RuntimeIdentifier без дополнительных запросов автоматически изменялся режим сборки: автономное приложение вместо зависящего от платформы.

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

В .NET 6 при наличии RuntimeIdentifier без указания того, является ли приложение автономным, вы получите следующее предупреждение:

warning NETSDK1179: One of '--self-contained' or '--no-self-contained' options are required when '--runtime' is used. (предупреждение NETSDK1179: при использовании "--runtime" требуется параметр "--self-contained" или "--no-self-contained").

Например, для следующей команды будет выдано такое предупреждение:

dotnet publish -r win-x86

Категория изменения

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

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

По умолчанию, если атрибут RuntimeIdentifier не указан, создается зависящее от платформы приложение. Такое поведение по умолчанию вызывало путаницу для многих клиентов. Цели добавления предупреждения:

  • предупредить клиентов о том, что теперь по умолчанию компилируется зависящее от платформы приложение;
  • приучить клиентов явным образом выбирать тип для приложения, которое они хотят собрать;
  • подготовить клиентов к возможному изменению поведения (сборка зависящего от платформы приложения) в .NET 7.
  • Укажите логическое значение в файле проекта.SelfContained
  • Любо добавьте в команду Build или Publish атрибут --self-contained с нужным значением.

Затронутые API

Н/П

См. также