Udostępnij za pośrednictwem


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

Zestaw .NET SDK 8.0.200 wprowadził regresję w nowych -getItemopcjach interfejsu wiersza polecenia , -getPropertyi -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

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

Wprowadzona wersja

.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 powodującej niezgodność

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 wprowadzenia 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 -getItemopcje , -getPropertyi -getTargetResult zostały przekazane do obu wywołań programu MSBuild, a nie tylko tych, które użytkownik powinien zostać wyzwolony.

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 funkcji -f z wywołań, które używają -getItemrównież funkcji , -getPropertylub -getTargetResults.