Share via


-getItem, -getProperty 및 -getTargetResult에 대한 중복 출력

.NET SDK 8.0.200에는 새로운 -getItem, -getProperty-getTargetResult MSBuild CLI 옵션에 회귀 기능이 도입되었습니다. SDK를 사용하여 특정 TargetFramework에 대한 MSBuild 작업을 수행하면 다음과 같이 출력이 복제됩니다.

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

참고 항목

예정된 .NET 8.0.200 SDK 릴리스에서 이 동작을 수정할 예정입니다.

도입된 버전

.NET 8.0.200

이전 동작

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

새 동작

영향을 받는 프로젝트를 빌드, 로드 또는 실행하지 못합니다.

호환성이 손상되는 변경의 형식

이는 특히 CI/CD 시나리오에서 사용자 스크립트에 영향을 줄 수 있는 동작 변경입니다.

변경 이유

이러한 옵션은 단일 사용자 요청 빌드에서 계산된 값을 반환하기 위한 것입니다. 그러나 buildpublish와 같은 SDK 시작 MSBuild 작업은 경우에 따라 MSBuild에 대한 두 번째 호출을 트리거할 수 있습니다. 특히 -f 옵션을 사용하여 특정 TargetFramework에 대해 빌드가 발생하도록 지정하는 경우에는 더욱 그렇습니다. 해당 시나리오에서는 -getItem, -getProperty-getTargetResult 옵션이 사용자가 트리거될 것으로 예상한 MSBuild 호출 대신 두 MSBuild 호출 모두에 전달되었습니다.

다음 작업 중 하나를 선택합니다.

  • 회귀가 도입되기 전의 이전 버전의 .NET SDK를 사용합니다.
  • 수정 사항이 포함된 .NET 8 SDK 버전을 사용합니다. 이 버전은 8.0.202 이후 버전이어야 합니다.
  • -getItem, -getProperty 또는 -getTargetResults도 사용하는 호출에서 -f 사용을 제거합니다.