다음을 통해 공유


'dotnet pack'은 릴리스 구성을 사용합니다.

코드를 NuGet 패키지로 압축하는 dotnet pack 명령은 이제 기본적으로 Debug 구성 대신 Release 구성을 사용합니다.

이전 동작

이전에는 구성이 명시적으로 지정되거나 PackRelease이(가) true(으)로 설정되지 않는 한 dotnet pack에서 Debug 구성을 사용했습니다.

PackRelease 속성은(는) .NET 7에서 이 호환성이 손상되는 변경의 경로로 추가되었습니다. 이전에는 Visual Studio 솔루션의 일부인 프로젝트에서 PackRelease을(를) 사용하도록 DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS 환경 변수를 설정할 수 있었습니다.

새 동작

.NET 8 SDK 이상 버전을 사용하여 개발하는 경우 dotnet pack은 기본적으로 모든 프로젝트에 Release 구성을 사용합니다. Debug을(를) 출력 경로로 하드 코딩한 CI/CD 스크립트, 테스트 또는 코드가 있는 경우 이 변경으로 워크플로가 중단될 수 있습니다. 또한 Debug 구성이 명시적으로 지정되지 않은 경우(예: dotnet pack --configuration Debug사용) 압축된 앱을 디버그할 수 없습니다.

dotnet pack은 여러 TFM(대상 프레임워크 모니커)에 대해 동시에 압축할 수 있습니다. 프로젝트가 여러 버전을 대상으로 하고 대상마다 PackRelease 값이 다른 경우 일부 TFM은 Release 구성을 압축하고 다른 TFM은 Debug 구성을 압축하는 충돌이 발생할 수 있습니다.

솔루션의 프로젝트:

  • dotnet pack은(는) 솔루션 파일이 지정된 경우 Visual Studio 솔루션의 모든 프로젝트를 압축할 수 있습니다. 솔루션의 각 프로젝트에 대해 PackRelease 값은 정의되지 않은 경우 암시적으로 true(으)로 설정됩니다. dotnet pack이 사용할 올바른 구성을 결정하려면 솔루션의 모든 프로젝트가 해당 값 PackRelease에 동의해야 합니다.

  • 이 변경으로 인해 dotnet pack의 성능이 저하될 수 있으며, 특히 많은 프로젝트가 포함된 솔루션의 경우 더욱 그렇습니다. 이 문제를 해결하기 위해 DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS 새 환경 변수가 도입되었습니다.

  • DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS 환경 변수가 더 이상 인식되지 않습니다.

도입된 버전

.NET 8 미리 보기 1

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

이 변경 내용은 원본 호환성동작 변경에 영향을 줄 수 있습니다.

변경 이유

패키지를 만들 때 대부분의 경우 코드를 최적화하고 디버깅 정보를 제외하여 패키지를 더 작게 유지할 수 있습니다.

DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS 환경 변수는 이제 사용하도록 설정한 동작이 기본 동작이며 세분화된 컨트롤이 더 이상 필요하지 않으므로 제거되었습니다.

  • 새 동작을 완전히 사용하지 않도록 설정하려면 DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE 환경 변수를 true(또는 다른 값)로 설정할 수 있습니다. 이 변수는 dotnet publishdotnet pack 모두에 영향을 줍니다.

  • 압축에 대한 Debug 구성을 명시적으로 지정하려면 -c 또는 --configuration 옵션을 dotnet pack와(과) 함께 사용합니다.

  • 하드 코딩된 출력 경로로 인해 CI/CD 파이프라인이 중단된 경우 경로를 Debug 대신 Release(으)로 업데이트하거나, DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE 환경 변수를 사용하여 새 동작을 사용하지 않도록 설정하거나, Debug 구성을 사용하도록 지정합니다.

  • 솔루션을 압축하고 하나 이상의 프로젝트가 명시적으로 PackRelease에 대한 값을 설정하기 때문에 손상되는 경우 각 프로젝트에서 명시적으로 PackRelease을(를) false(으)로 설정해야 합니다.

    <PropertyGroup>
      <PackRelease>false</PackRelease>
    </PropertyGroup>
    
  • 솔루션을 압축하고 성능이 저하된 경우 DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS 환경 변수를 true(또는 다른 값)로 설정하여 회귀를 제거할 수 있습니다. 이 변수를 사용하고 프로젝트에서 PackRelease을 정의하는 경우 모든 프로젝트에서 이를 정의해야 하거나 Directory.Build.Props 파일을 사용할 수 있습니다. 이 변수는 dotnet publishdotnet pack 모두에 영향을 줍니다.

참고 항목