'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 모두에 영향을 줍니다.

참고 항목