dotnet pack
코드를 NuGet 패키지로 압축하는 명령은 이제 Release
구성을 기본적으로 사용하며, Debug
구성 대신 사용합니다.
이전 동작
dotnet pack
은(는) 이전에는 Debug
구성을 사용했지만, 명시적으로 구성이 지정되어 있거나 PackRelease
가 true
로 설정된 경우는 예외였습니다.
이 속성PackRelease
은 호환성을 손상시킬 수 있는 변경 사항에 대한 해결책으로 .NET 7에 추가되었습니다. 이전에는 Visual Studio 솔루션의 DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
일부인 프로젝트에서 사용할 PackRelease
환경 변수를 설정할 수 있었습니다.
새 동작
.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 파이프라인이 중단된 경우 대신 경로를
Release
Debug
업데이트하거나, 환경 변수를 사용하여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