Udostępnij przez


Zduplikowane dane wyjściowe dla parametrów -getItem, -getProperty i -getTargetResult

Zestaw .NET SDK 8.0.200 wprowadził regresję w nowych -getItem opcjach CLI, -getProperty i -getTargetResult MSBuild. Gdy zestaw SDK jest używany do wykonywania operacji MSBuild dla określonego elementu TargetFramework, dane wyjściowe są duplikowane w następujący sposób:

> 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/

Uwaga / Notatka

Zamierzamy naprawić to zachowanie w nadchodzącej wersji zestawu SDK platformy .NET 8.0.200.

Wersja wprowadzona

.NET 8.0.200

Poprzednie zachowanie

> dotnet build -r:android-arm64 --getProperty:OutputPath -f:net8.0-android
bin\Debug/net8.0-android/android-arm64/

Nowe zachowanie

Kompilowanie, ładowanie lub uruchamianie projektu, którego dotyczy problem, kończy się niepowodzeniem.

Typ zmiany przełamującej

Jest to zmiana behawioralna, która może mieć wpływ na skrypty użytkownika, zwłaszcza w scenariuszach ciągłej integracji/ciągłego wdrażania.

Przyczyna zmiany

Te opcje mają zwracać wartości obliczone z pojedynczej kompilacji żądanej przez użytkownika. Jednak zainicjowane przez zestaw SDK operacje MSBuild, takie jak build i publish czasami mogą wyzwalać drugie wywołanie programu MSBuild — szczególnie wtedy, gdy -f opcja jest używana do określenia, że kompilacja powinna wystąpić dla określonej ramki docelowej. W tym scenariuszu opcje -getItem, -getProperty i -getTargetResult zostały przekazane do obu wywołań programu MSBuild, zamiast tylko do tego, które użytkownik oczekiwał, że zostanie wyzwolone.

Wybierz jedną z następujących akcji:

  • Użyj starszej wersji zestawu .NET SDK (przed wprowadzeniem regresji).
  • Użyj wersji zestawu .NET 8 SDK zawierającego poprawkę, która powinna być dowolną wersją po wersji 8.0.202.
  • Usuń dowolne użycie -f z wywołań, które również używają -getItem, -getProperty lub -getTargetResults.