다음을 통해 공유


자체 포함형 배포 런타임 전진 업데이트

.NET Core 자체 포함 애플리케이션 배포 에는 .NET Core 라이브러리와 .NET Core 런타임이 모두 포함됩니다. .NET Core 2.1 SDK(버전 2.1.300)부터 자체 포함된 애플리케이션 배포는 컴퓨터에 가장 높은 패치 런타임을 게시합니다. 기본적으로 dotnet publish 자체 포함 배포의 경우 게시 컴퓨터에서 SDK의 일부로 설치된 최신 버전을 선택합니다. 이렇게 하면 배포된 애플리케이션이 publish 기간 동안 사용할 수 있는 보안 수정 사항(및 기타 수정 사항)을 적용하여 실행할 수 있습니다. 새 패치를 얻으려면 애플리케이션을 다시 게시해야 합니다. 자체 포함 애플리케이션은 명령에서 -r <RID>를 지정 하거나 프로젝트 파일(csproj/vbproj) 또는 명령줄에서 dotnet publish를 지정하여 생성됩니다.

패치 버전 업데이트 개요

restore, buildpublishdotnet별도로 실행할 수 있는 명령입니다. 런타임 선택은 restore 작업의 일부이며, publish 또는 build의 일부가 아닙니다. 호출 publish하는 경우 최신 패치 버전이 선택됩니다. 인수를 publish 사용하여 호출 --no-restore 하는 경우 이전 restore 버전이 새 자체 포함 애플리케이션 게시 정책으로 실행되지 않았을 수 있으므로 원하는 패치 버전을 가져오지 못할 수 있습니다. 이 경우 다음과 유사한 텍스트로 빌드 오류가 생성됩니다.

"프로젝트는 Microsoft.NETCore.App 버전 2.0.0을 사용하여 복원되었지만 현재 설정에서는 버전 2.0.6이 대신 사용됩니다. 이 문제를 해결하려면 복원 및 빌드 또는 게시와 같은 후속 작업에 동일한 설정이 사용되는지 확인합니다. 일반적으로 이 문제는 RuntimeIdentifier 속성이 빌드 또는 게시 중에 설정되었지만 복원 중에는 설정되지 않은 경우에 발생할 수 있습니다."

비고

restorebuild 같은 publish다른 명령의 일부로 암시적으로 실행할 수 있습니다. 다른 명령의 일부로 암시적으로 실행하는 경우 적절한 아티팩트가 생성되도록 추가 컨텍스트가 제공됩니다. 런타임을 사용할 때 publish(예: dotnet publish -r linux-x64), 암시적으로 restore 패키지가 linux-x64 런타임에 대해 복원됩니다. 명시적으로 호출 restore 하는 경우 해당 컨텍스트가 없으므로 기본적으로 런타임 패키지를 복원하지 않습니다.

게시하는 동안 복원을 방지하는 방법

restorepublish 작업의 일환으로 실행하는 것은 시나리오에 바람직하지 않을 수 있습니다. 자체 포함 애플리케이션을 만들 때 restore를 방지하기 위해 publish를 피하십시오.

  • RuntimeIdentifiers 속성을 게시할 모든 RID의 세미콜론으로 구분된 목록으로 설정합니다.
  • TargetLatestRuntimePatch 속성을 true으로 설정합니다.

dotnet publish 옵션에서 --no-restore 명령 사용

동일한 프로젝트 파일을 사용하여 자체 포함 애플리케이션과 프레임워크 종속 애플리케이션 을 모두 만들고 인수를 사용 --no-restoredotnet publish하려는 경우 다음 중 하나를 선택합니다.

  1. 프레임워크 종속 동작을 선호합니다. 애플리케이션이 프레임워크에 종속된 경우 기본 동작입니다. 애플리케이션이 자체 포함되고 패치되지 않은 2.1.0 로컬 런타임을 사용할 수 있는 경우 프로젝트 파일에서 이를 설정합니다 TargetLatestRuntimePatchfalse .

  2. 독립적인 행동을 선호합니다. 애플리케이션이 자체 포함되는 경우 기본 동작입니다. 애플리케이션이 프레임워크에 종속되어 있고 최신 패치를 설치해야 하는 경우 프로젝트 파일로 설정합니다 TargetLatestRuntimePatchtrue .

  3. 프로젝트 파일의 특정 패치 버전으로 설정 RuntimeFrameworkVersion 하여 런타임 프레임워크 버전을 명시적으로 제어합니다.