Saída duplicada para -getItem, -getProperty e -getTargetResult
O SDK do .NET 8.0.200 introduziu uma regressão nas novas opções da CLI do MSBuild -getItem
, -getProperty
e -getTargetResult
. Quando o SDK é usado para executar uma operação do MSBuild para um TargetFramework específico, a saída é duplicada, dessa forma:
> 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/
Observação
Pretendemos corrigir esse comportamento em uma próxima versão do SDK do .NET 8.0.200.
Versão introduzida
.NET 8.0.200
Comportamento anterior
> dotnet build -r:android-arm64 --getProperty:OutputPath -f:net8.0-android
bin\Debug/net8.0-android/android-arm64/
Novo comportamento
A compilação, o carregamento ou a execução de um projeto afetado falhou.
Tipo de alteração interruptiva
Essa é uma alteração comportamental que pode afetar os scripts de usuário, especialmente em cenários de CI/CD.
Motivo da alteração
Essas opções destinam-se a retornar valores calculados de uma única compilação solicitada pelo usuário. No entanto, operações do MSBuild iniciadas pelo SDK como build
e publish
às vezes podem disparar uma segunda chamada para o MSBuild — particularmente quando a opção -f
é usada para especificar que uma compilação deve ocorrer para um TargetFramework específico. Nesse cenário, as opções -getItem
, -getProperty
e -getTargetResult
foram passadas para ambas as chamadas do MSBuild, em vez de apenas aquela que um usuário esperava que fosse acionada.
Ação recomendada
Escolha uma das seguintes ações:
- Use uma versão mais antiga do SDK do .NET (antes da introdução da regressão).
- Use uma versão do SDK do .NET 8 que contém a correção, que deve ser qualquer versão após 8.0.202.
- Remova qualquer uso de
-f
em chamadas que também usam-getItem
,-getProperty
ou-getTargetResults
.