'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 publish
및dotnet 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 publish
및dotnet pack
모두에 영향을 줍니다.
참고 항목
.NET