Повторяющиеся выходные данные для -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, могут build
publish
вызывать второй вызов MSBuild, особенно если -f
этот параметр используется для указания того, что сборка должна выполняться для определенного TargetFramework. В этом сценарии -getItem
-getProperty
параметры и -getTargetResult
параметры были переданы обоим вызовам MSBuild, а не только пользователю, который ожидается активировать.
Рекомендуемое действие
Выберите один из следующих вариантов.
- Используйте более раннюю версию пакета SDK для .NET (до появления регрессии).
- Используйте версию пакета SDK для .NET 8, содержащего исправление, которое должно быть любой версией после версии 8.0.202.
- Удалите любое использование
-f
из вызовов, которые также используют-getProperty
-getItem
или-getTargetResults
.