Zduplikowane dane wyjściowe dla parametrów -getItem, -getProperty i -getTargetResult
Zestaw .NET SDK 8.0.200 wprowadził regresję w nowych -getItem
opcjach interfejsu wiersza polecenia , -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
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 -getItem
opcje , -getProperty
i -getTargetResult
zostały przekazane do obu wywołań programu MSBuild, a nie tylko tych, które użytkownik powinien zostać wyzwolony.
Zalecana akcja
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ą-getItem
również funkcji ,-getProperty
lub-getTargetResults
.