Duplicera utdata för -getItem, -getProperty och -getTargetResult
.NET SDK 8.0.200 introducerade en regression i de nya -getItem
, -getProperty
och -getTargetResult
MSBuild CLI-alternativen. När SDK:t används för att utföra en MSBuild-åtgärd för en specifik TargetFramework dupliceras utdata, så här:
> 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/
Kommentar
Vi har för avsikt att åtgärda det här beteendet i en kommande version av .NET 8.0.200 SDK.
Version introducerad
.NET 8.0.200
Tidigare beteende
> dotnet build -r:android-arm64 --getProperty:OutputPath -f:net8.0-android
bin\Debug/net8.0-android/android-arm64/
Nytt beteende
Det går inte att skapa, läsa in eller köra ett berört projekt.
Typ av icke-bakåtkompatibel ändring
Det här är en beteendeförändring som kan påverka användarskript, särskilt i CI/CD-scenarier.
Orsak till ändringen
De här alternativen är avsedda att returnera värden som beräknas från en enda användar begärd version. Men SDK-initierade MSBuild-åtgärder som build
och publish
kan ibland utlösa ett andra anrop till MSBuild – särskilt när -f
alternativet används för att ange att en version ska ske för ett specifikt TargetFramework. I det scenariot -getItem
skickades alternativen , -getProperty
och -getTargetResult
till båda MSBuild-anropen, i stället för bara den som en användare förväntade sig att utlösas.
Rekommenderad åtgärd
Välj någon av följande åtgärder:
- Använd en äldre version av .NET SDK (innan regressionen introducerades).
- Använd en version av .NET 8 SDK som innehåller korrigeringen, som ska vara valfri version efter 8.0.202.
- Ta bort all användning av
-f
från anrop som också använder-getItem
,-getProperty
eller-getTargetResults
.