Partilhar via


Saída duplicada para -getItem, -getProperty e -getTargetResult

O .NET SDK 8.0.200 introduziu uma regressão nas novas -getItemopções da -getPropertyCLI , 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, -getPropertye -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.

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