Compartir a través de


Salida duplicada de -getItem, -getProperty y -getTargetResult

El SDK de .NET 8.0.200 introdujo una regresión en las nuevas opciones de la CLI -getItem, -getProperty y -getTargetResult 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/

Nuevo comportamiento

Se produce un error en la compilación, carga o ejecución de un proyecto afectado.

Tipo de cambio disruptivo

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 valores calculados a partir de una única compilación solicitada por el usuario. Sin embargo, las operaciones de MSBuild iniciadas por el SDK como build y publish a veces pueden desencadenar una segunda llamada a MSBuild, especialmente cuando se usa la -f opción 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 (antes de introducir la regresión).
  • Use una versión del SDK de .NET 8 que contiene la corrección, que debe ser cualquier versión después de la versión 8.0.202.
  • Elimina el uso de -f en llamadas que también utilizan -getItem, -getProperty, o -getTargetResults.