자체 포함 배포 및 실행 파일 트리밍

프레임워크 종속 배포 모델은 .NET 도입 이후 가장 성공적인 배포 모델입니다. 이 시나리오에서 애플리케이션 개발자는 애플리케이션과 타사 어셈블리만 번들하고 .NET 런타임 및 런타임 라이브러리는 클라이언트 머신에서 사용할 수 있을 것으로 예상합니다. 이 배포 모델은 최신 .NET 릴리스에서도 주요 모델로 계속 사용되지만 프레임워크 종속 모델이 최선의 선택이 아닌 몇 가지 시나리오가 있습니다. 다른 방법은 .NET 런타임과 런타임 라이브러리가 애플리케이션 및 타사 어셈블리와 함께 번들되는 자체 포함 애플리케이션을 게시하는 것입니다.

트리밍된 자체 포함 배포 모델은 배포 크기를 줄이도록 최적화된 특수 버전의 자체 포함 배포 모델입니다. 배포 크기 최소화는 Blazor 애플리케이션과 같은 일부 클라이언트 쪽 시나리오의 중요한 요구 사항입니다. 애플리케이션 복잡성에 따라 프레임워크 어셈블리의 하위 집합만 참조되며 각 어셈블리 내 코드의 하위 집합은 애플리케이션 실행에 필요합니다. 사용되지 않는 라이브러리 부분은 필요가 없으며 패키지된 애플리케이션에서 트리밍할 수 있습니다.

그러나 다양한 문제 코드 패턴을 안정적으로 분석할 수 없다는 점에서(주로 리플렉션 사용을 중심으로 함) 애플리케이션의 빌드 시간 분석으로 인해 런타임에 오류가 발생할 위험이 있습니다. 이러한 문제를 완화하기 위해 트리머가 코드 패턴을 완전히 분석할 수 없을 때마다 경고가 생성됩니다. 트리밍 경고의 의미와 해결 방법에 대한 정보는 트리밍 경고 소개를 참조하세요.

참고 항목

  • 트리밍은 .NET 6 이상 버전에서 완벽하게 지원됩니다. .NET Core 3.1 및 .NET 5에서 트리밍은 실험적인 기능이었습니다.
  • 트리밍은 ‘게시된 자체 포함 애플리케이션에만’ 사용할 수 있습니다.

트리밍 문제를 일으키는 구성 요소

Warning

트리밍할 수 없는 프로젝트 형식도 있습니다. 자세한 내용은 알려진 트리밍 비호환성을 참조하세요.

빌드 시간 분석 문제를 일으키는 코드는 트리밍에 적합하지 않습니다. 애플리케이션에서 사용할 때 문제가 되는 몇 가지 일반적인 코딩 패턴은 무제한 리플렉션 사용과 빌드 시 표시되지 않는 외부 종속성에서 비롯됩니다. 무제한 리플렉션의 예는 XML 직렬화와 같은 레거시 serializer이고, 보이지 않는 외부 종속성의 예는 기본 제공 COM입니다. 애플리케이션의 트리밍 경고를 해결하려면 트리밍 경고 소개를 참조하고 라이브러리가 트리밍과 호환되도록 하려면 트리밍을 위한 .NET 라이브러리 준비를 참조하세요.

트리밍 사용

  1. <PublishTrimmed>true</PublishTrimmed>를 프로젝트 파일에 추가합니다.

    이 속성은 자체 포함 게시 시 잘린 앱을 생성합니다. 또한 트리밍과 호환되지 않는 기능을 해제하고 빌드 중에 트리밍 호환성 경고를 표시합니다.

    <PropertyGroup>
        <PublishTrimmed>true</PublishTrimmed>
    </PropertyGroup>
    
  2. 그런 다음, dotnet publish 명령 또는 Visual Studio를 사용하여 앱을 게시합니다.

CLI를 사용하여 게시

다음 예제에서는 Windows용 앱을 트리밍된 자체 포함 애플리케이션으로 게시합니다.

dotnet publish -r win-x64

트리밍은 자체 포함 앱에서만 지원됩니다.

dotnet build 중에 자르기와 호환되지 않는 기능이 사용하지 않도록 설정되도록 <PublishTrimmed>를 프로젝트 파일에 설정해야 합니다. 그러나 이 옵션을 dotnet publish에 대한 인수로 설정할 수도 있습니다.

dotnet publish -r win-x64 -p:PublishTrimmed=true

자세한 내용은 .NET CLI를 사용하여 .NET 앱 게시를 참조하세요.

Visual Studio를 사용하여 게시

  1. 솔루션 탐색기에서 게시하려는 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다.

    Solution Explorer with a right-click menu highlighting the Publish option.

    기존 게시 프로필이 없는 경우 지침에 따라 게시 프로필을 만들고 폴더 대상 유형을 선택합니다.

  2. 추가 작업>편집을 선택합니다.

    Visual studio publish profile with edit button.

  3. 프로필 설정 대화 상자에서 다음 옵션을 설정합니다.

    • 배포 모드자체 포함으로 설정합니다.
    • 대상 런타임을 게시할 플랫폼으로 설정합니다.
    • 사용하지 않는 코드 자르기를 선택합니다.

    저장을 선택하여 설정을 저장하고 게시 대화 상자로 돌아갑니다.

    Profile settings dialog with deployment mode, target runtime, and trim unused assemblies options highlighted.

  4. 게시를 선택하여 트리밍된 앱을 게시합니다.

자세한 내용은 Visual Studio를 사용하여 .NET Core 앱 게시를 참조하세요.

Mac용 Visual Studio를 사용하여 게시

Mac용 Visual Studio에서는 앱을 게시하는 옵션을 제공하지 않습니다. CLI를 통해 게시 섹션의 지침에 따라 수동으로 게시해야 합니다. 자세한 내용은 .NET CLI를 사용하여 .NET 앱 게시를 참조하세요.

참고 항목