Salida duplicada de -getItem, -getProperty y -getTargetResult

El SDK de .NET 8.0.200 incluía una regresión en las nuevas opciones -getItem, -getProperty y -getTargetResult de la CLI de MSBuild. Cuando se usa el SDK para realizar una operación de MSBuild para un TargetFramework específico, la salida se duplica, de la siguiente manera:

> 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 corregir este comportamiento en una próxima versión del SDK de .NET 8.0.200.

Versión introducida

.NET 8.0.200

Comportamiento anterior

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

Comportamiento nuevo

Se produce un error al compilar, cargar o ejecutar un proyecto afectado.

Tipo de cambio importante

Se trata de un cambio de comportamiento que puede afectar a los scripts de usuario, especialmente en escenarios de CI/CD.

Motivo del cambio

Estas opciones están pensadas para devolver los valores calculados a partir de una única compilación solicitada por el usuario. Sin embargo, las operaciones de MSBuild iniciadas por el SDK como, por ejemplo build y publish, a veces pueden desencadenar una segunda llamada a MSBuild, especialmente cuando se usa la opción -f para especificar que se debe producir una compilación para un TargetFramework específico. En ese escenario, las opciones -getItem, -getProperty y -getTargetResult se pasaron a ambas invocaciones de MSBuild, en lugar de solo a aquella que el usuario esperaba que se desencadenadora.

Elija una de las acciones siguientes:

  • Use una versión anterior del SDK de .NET (anterior a que se introdujera la regresión).
  • Use una versión del SDK de .NET 8 que contenga la corrección, la cual puede ser cualquier versión posterior a 8.0.202.
  • Elimine cualquier uso de -f en las llamadas que también usen -getItem, -getProperty o -getTargetResults.