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


Повторяющиеся выходные данные для -getItem, -getProperty и -getTargetResult

Пакет SDK для .NET 8.0.200 появился в новых -getItem-getProperty-getTargetResult параметрах интерфейса командной строки и MSBuild. Если пакет SDK используется для выполнения операции MSBuild для определенного targetFramework, выходные данные дублируются, например:

> dotnet build -r:android-arm64 --getProperty:OutputPath -f:net8.0-android
bin\Debug/net8.0-android/android-arm64/
bin\Debug/net8.0-android/android-arm64/

Примечание.

Мы намерены исправить это поведение в предстоящем выпуске пакета SDK для .NET 8.0.200.

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

.NET 8.0.200

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

> dotnet build -r:android-arm64 --getProperty:OutputPath -f:net8.0-android
bin\Debug/net8.0-android/android-arm64/

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

Сбой сборки, загрузки или запуска затронутого проекта.

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

Это изменение поведения, которое может повлиять на пользовательские сценарии, особенно в сценариях CI/CD.

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

Эти параметры предназначены для возврата значений, вычисляемых из одной запрошенной пользователем сборки. Однако операции, инициированные пакетом SDK MSBuild, могут buildpublish вызывать второй вызов MSBuild, особенно если -f этот параметр используется для указания того, что сборка должна выполняться для определенного TargetFramework. В этом сценарии -getItem-getPropertyпараметры и -getTargetResult параметры были переданы обоим вызовам MSBuild, а не только пользователю, который ожидается активировать.

Выберите один из следующих вариантов.

  • Используйте более раннюю версию пакета SDK для .NET (до появления регрессии).
  • Используйте версию пакета SDK для .NET 8, содержащего исправление, которое должно быть любой версией после версии 8.0.202.
  • Удалите любое использование -f из вызовов, которые также используют -getProperty-getItemили -getTargetResults.