연습 - 자체 포함 배포를 위해 게시

완료됨

자체 포함 배포에는 앱 및 해당 종속성뿐만 아니라 .NET 런타임도 포함됩니다. .NET 런타임이 앱에 포함되어 있으므로 대상 머신은 앱을 실행하기 위해 .NET 런타임을 설치할 필요가 없습니다. 이렇게 하면 자체 포함 배포가 프레임워크 종속 배포보다 커집니다. 또한 자체 포함 앱은 최신 패치를 수신하기 위해 .NET 런타임 업데이트 배포를 처리해야 합니다.

IT 부서는 재해 복구를 위해 .NET 런타임이 설치되지 않은 서버에서 앱을 테스트하고 있음을 팀에 알렸습니다. 64비트 Windows 서버와 64비트 Linux 서버 모두에서 앱을 테스트하려고 합니다. 이 테스트를 지원하려면 각 환경에 대한 자체 포함 배포로 앱을 게시해야 합니다.

이 연습에서는 ASP.NET Core 앱을 Windows 및 Linux용 자체 포함 배포로 게시합니다.

자체 포함 배포로 게시

  1. 터미널 창에서 MyWebApp 디렉터리로 이동합니다. 이전 연습이 끝나면 MyWebApp/publish-fd에 있었습니다. MyWebApp 디렉터리로 돌아가야 합니다.

    cd ..
    

    이제 MyWebApp 디렉터리에 있어야 합니다.

  2. 다음 명령을 실행하여 64비트 Windows용 자체 포함 배포로 앱을 게시합니다.

    dotnet publish -c Release -r win-x64 -o publish-scd-win64 --self-contained
    

    이전 명령에서:

    • -c Release 는 릴리스 모드에서 앱을 빌드해야 임을 지정합니다. 이렇게 하면 성능에 대한 앱이 최적화됩니다.
    • -r win-x64 는 64비트 Windows용으로 앱을 게시해야 한다고 지정합니다. win-x64 는 64비트 Windows용 RID( 런타임 식별자 )이므로 앱은 64비트 Windows에 대한 자체 포함 배포로 게시됩니다.
    • -o publish-scd-win64 는 게시된 앱의 출력 디렉터리를 지정합니다.
    • --self-contained 는 앱이 자체 포함된 배포로 게시되도록 지정합니다.

    이 명령은 MyWebApp/publish-scd-win64 디렉터리에 64비트 Windows용 자체 포함 배포로 앱을 빌드하고 게시합니다.

  3. 탐색기 창에서 MyWebApp/publish-scd-win64 디렉터리의 내용을 검토합니다.

    이 디렉터리의 파일 목록은 게시-fd 디렉터리의 파일 목록보다 훨씬 큽합니다. 자체 포함 배포에는 .NET 런타임 외에도 프레임워크 종속 배포와 동일한 파일이 포함되어 있기 때문입니다. MyWebApp.exe 파일은 앱에 대한 64비트 Windows 실행 파일입니다.

  4. 다음 명령을 실행하여 64비트 Linux용 자체 포함 배포로 앱을 게시합니다.

    dotnet publish -c Release -r linux-x64 -o publish-scd-linux64 --self-contained
    

    이번에는 -r linux-x64 64비트 Linux용으로 앱을 게시해야 한다고 지정합니다.

  5. 탐색기 창에서 MyWebApp/publish-scd-linux64 디렉터리의 내용을 검토합니다.

    publish-scd-linux64 디렉터리의 파일 목록은 publish-scd-win64 디렉터리의 파일 목록과 비슷하지만 실행 파일의 이름은 MyWebApp.exe대신 MyWebApp입니다. 이는 Linux에서 파일 확장자를 사용하여 파일 형식을 결정하지 않기 때문입니다. Linux 서버에 앱을 배포한 후에는 명령을 사용하여 MyWebApp 파일에 chmod +x 실행 권한을 부여해야 실행할 수 있습니다.