'dotnet publish'는 릴리스 구성을 사용합니다.
이제 dotnet publish
명령은 대상 프레임워크가 .NET 8 이상 버전인 경우 기본적으로 Debug
구성 대신 Release
구성을 사용합니다.
이전 동작
이전에는 구성이 명시적으로 지정되거나 PublishRelease
이(가) true
(으)로 설정되지 않는 한 dotnet publish
에서 Debug
구성을 사용했습니다.
PublishRelease
속성은(는) .NET 7에서 이 호환성이 손상되는 변경의 경로로 추가되었습니다. 이전에는 Visual Studio 솔루션의 일부인 프로젝트에서 PublishRelease
을(를) 사용하도록 DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
환경 변수를 설정할 수 있었습니다.
새 동작
.NET 8 SDK 이상 버전을 사용하여 개발하는 경우 dotnet publish
은 TargetFramework
이 net8.0
이상 버전으로 설정된 프로젝트에 기본적으로 Release
구성을 사용합니다. Debug
을(를) 출력 경로로 하드 코딩한 CI/CD 스크립트, 테스트 또는 코드가 있는 경우 이 변경으로 워크플로가 중단될 수 있습니다.
프로젝트가 여러 버전을 대상으로 하는 경우 게시할 때 .NET 8 이상의 대상 프레임워크를 지정하는 경우에만 새 동작이 적용됩니다(예: dotnet publish -f net8.0
사용).
솔루션의 프로젝트:
dotnet publish
은(는) 솔루션 파일이 지정된 경우 Visual Studio 솔루션의 모든 프로젝트를 게시할 수 있습니다. .NET 8 이상을 대상으로 하는 솔루션 프로젝트의 경우 정의되지 않은 경우 값PublishRelease
이 암시적으로true
로 설정됩니다. 그러나dotnet publish
이 솔루션에 사용할 올바른 구성을 결정하려면 솔루션의 모든 프로젝트가 해당 값PublishRelease
에 동의해야 합니다. 솔루션의 이전 프로젝트에PublishRelease
이false
로 설정된 경우 새 .NET 8+ 프로젝트에 대해서도 속성을false
으로 명시적으로 설정해야 합니다.이 변경으로 인해
dotnet publish
의 성능이 저하될 수 있으며, 특히 많은 프로젝트가 포함된 솔루션의 경우 더욱 그렇습니다. 이 문제를 해결하기 위해DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
새 환경 변수가 도입되었습니다.DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
환경 변수가 더 이상 인식되지 않습니다.
도입된 버전
.NET 8 미리 보기 1
호환성이 손상되는 변경의 형식
이 변경 내용은 원본 호환성 및 동작 변경에 영향을 줄 수 있습니다.
변경 이유
게시할 때 대부분의 경우 코드를 최적화하고 디버깅 정보를 제외하여 앱을 더 작게 유지할 수 있습니다. 고객은 오랫동안 Release
을(를) publish
의 기본 구성으로 요청했습니다. 또한 Visual Studio는 수년 동안 이 동작을 수행해 왔습니다.
DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
환경 변수는 이제 사용하도록 설정한 동작이 기본 동작이며 세분화된 컨트롤이 더 이상 필요하지 않으므로 제거되었습니다.
권장 작업
새 동작을 완전히 사용하지 않도록 설정하려면
DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
환경 변수를true
(또는 다른 값)로 설정할 수 있습니다. 이 변수는dotnet publish
및dotnet pack
모두에 영향을 줍니다.게시를 위해
Debug
구성을 명시적으로 지정하려면dotnet publish
와(과) 함께-c
또는--configuration
옵션을 사용합니다.하드 코딩된 출력 경로로 인해 CI/CD 파이프라인이 중단된 경우 경로를
Debug
대신Release
(으)로 업데이트하거나,DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
환경 변수를 사용하여 새 동작을 사용하지 않도록 설정하거나,Debug
구성을 사용하도록 지정합니다.솔루션을 게시하고 손상된 경우 명시적으로
PublishRelease
을true
로 설정(또는 이전 동작으로 되돌리려면false
)을 설정할 수 있습니다.<PropertyGroup> <PublishRelease>true</PublishRelease> </PropertyGroup>
또는 Directory.Build.Props 파일에서 속성을 지정할 수 있습니다. 그러나 이 파일에서
false
로 설정하는 경우 솔루션의 .NET 8+ 프로젝트에서 속성을 명시적으로false
로 설정해야 합니다. 마찬가지로 일부 프로젝트에서 Directory.Build.Props 파일의 값과 다른 값을 명시적으로 설정하면 게시가 실패합니다.솔루션을 게시하고 성능이 저하된 경우
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
환경 변수를true
(또는 다른 값)로 설정하여 회귀를 제거할 수 있습니다. 그러나 이 변수를 설정하고 솔루션에 .NET 8+ 프로젝트와 .NET 7 이하를 대상으로 하는 프로젝트가 포함된 경우 모든 프로젝트가PublishRelease
을(를) 정의할 때까지 게시가 실패합니다. 이 변수는dotnet publish
및dotnet pack
모두에 영향을 줍니다.
참고 항목
.NET