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/

Anmärkning

Vi har för avsikt att åtgärda det här beteendet i en kommande version av .NET 8.0.200 SDK.

Version lanserad

.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 brytande ändring

Det här är en beteendeförändring som kan påverka användarskript, särskilt i CI/CD-scenarier.

Orsak till ändring

Dessa alternativ är avsedda att returnera värden som beräknas från en enda version som begärts av användaren. 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 skickades alternativen -getItem, -getProperty, och -getTargetResult till båda MSBuild-anropen, istället för bara det som en användare förväntade sig skulle 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.