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.

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, -getPropertyou -getTargetResults.