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.
Acción recomendada
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
.