Condividi tramite


Output duplicato per -getItem, -getProperty e -getTargetResult

.NET SDK 8.0.200 ha introdotto una regressione nelle nuove opzioni -getItem, -getProperty e -getTargetResult dell'interfaccia della riga di comando (CLI) di MSBuild. Quando l'SDK viene usato per eseguire un'operazione MSBuild per un TargetFramework specifico, l'output viene duplicato, come illustrato di seguito:

> 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

Questo comportamento verrà risolto in una versione futura di .NET 8.0.200 SDK.

Versione introdotta

.NET 8.0.200

Comportamento precedente

> dotnet build -r:android-arm64 --getProperty:OutputPath -f:net8.0-android
bin\Debug/net8.0-android/android-arm64/

Nuovo comportamento

La compilazione, il caricamento o l'esecuzione di un progetto interessato hanno esito negativo.

Tipo di modifica che causa un'interruzione

Si tratta di una modifica funzionale che può influire sugli script utente, in particolare negli scenari CI/CD.

Motivo della modifica

Queste opzioni sono destinate a restituire valori calcolati da una singola build richiesta dall'utente. Tuttavia, le operazioni MSBuild avviate dall'SDK come build e publish talvolta possono attivare una seconda chiamata a MSBuild, in particolare quando viene usata l'opzione -f per specificare che deve verificarsi una build per un TargetFramework specifico. In questo scenario, le opzioni -getItem, -getPropertye -getTargetResult sono state passate a entrambe le chiamate di MSBuild invece di quella che l'utente si aspettava venisse attivata.

Scegliere una delle azioni seguenti:

  • Usare una versione precedente di .NET SDK (prima dell'introduzione della regressione).
  • Usare una versione di .NET 8 SDK che contiene la correzione, che deve essere qualsiasi versione successiva alla versione 8.0.202.
  • Rimuovere qualsiasi utilizzo di -f dalle chiamate che usano anche -getItem, -getProperty o -getTargetResults.