Dela via


Duplicera utdata för -getItem, -getProperty och -getTargetResult

.NET SDK 8.0.200 introducerade en regression i de nya -getItem, -getPropertyoch -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 -getItemskickades alternativen , -getPropertyoch -getTargetResult till båda MSBuild-anropen, i stället för bara den som en användare förväntade sig att utlösas.

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, -getPropertyeller -getTargetResults.