Saída duplicada para -getItem, -getProperty e -getTargetResult
O .NET SDK 8.0.200 introduziu uma regressão nas novas -getItem
opções da -getProperty
CLI , e -getTargetResult
MSBuild. Quando o SDK é usado para executar uma operação MSBuild para um TargetFramework específico, a saída é duplicada, assim:
> 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/
Nota
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 construção, o carregamento ou a execução de um projeto afetado falham.
Tipo de mudança de rutura
Essa é uma mudança comportamental que pode afetar os scripts do usuário, especialmente em cenários de CI/CD.
Razão para a alteração
Essas opções destinam-se a retornar valores calculados a partir de uma única compilação solicitada pelo usuário. No entanto, operações MSBuild iniciadas pelo SDK como build
e publish
às vezes podem disparar uma segunda chamada para MSBuild — particularmente quando a -f
opção é usada para especificar que uma compilação deve ocorrer para um TargetFramework específico. Nesse cenário, -getItem
, -getProperty
e -getTargetResult
as opções foram passadas para ambas as invocações do MSBuild, em vez de apenas àquela 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 regressão ser introduzida).
- 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
chamadas que também usem-getItem
,-getProperty
ou-getTargetResults
.