C#에서 GUI 개발 후 dotnet과 함께 배포하기
포스트
취소

C#에서 GUI 개발 후 dotnet과 함께 배포하기

개요

흔히 C#에서 프로그램을 개발 후에 다른 컴퓨터에 배포해야할 가능성이 있다. 그래서 초기에 사용자에게 .Net Runtime을 설치 한 다음, 프로그램을 실행해야 한다 설명을 해줘야하는 단점이 있다.

이런 방법으로는 분명히 확실하고 간단한 방법이지만, 완전히 컴맹이거나 이걸 설명해야하는 경우에 이걸 왜? 설치 해야하나요? 라는 질문 받을 수 있다. 그런 경우 애매하며 답을 완벽하게 주는 것 또한 어렵다.

그런 경우를 위해 가끔 초기 인스톨러 제공하여 문제 해결하기도 한다. 이런 인스톨러를 구성하기 위해 복잡한 코드 작성 통하여 제공할 수 있지만, Microsoft에서 기본적으로 제공하는 기능도 존재한다. 간단하게 설명하자면 C 드라이브에서 Program Files에 프로그램 설치하는 방법이 있다는 뜻이다.

그렇지만 경우는 프로그램을 설치하고, 앱 관리 프로그램에 등록이 되므로 복잡한 과정이(없지만)나 무언가를 설치 해야한다는 단점이 존재한다. 가끔 누구나 포터블로 제공하고 싶을 때가 있듯이다.

기존 사례로는 설치 방식이라면 간단하게 제공할 수 있지만 포터블인 경우 어려움이 존재한다. 포터블로 제공하는 것은 의외로 중요하며, 언제 어디서나 실행이 될 수 있다라는 확신감을 주기도 한다. 예로 Visual Basic 6.0과 Visual Studio와 같이 포터블 버전과 설치 버전 느낌이다.

그래서 Microsoft에서 C#을 포함한 응용 프로그램을 배포할 수 있도록 제공하고 있다. 이런 기능을 Publish 이라한다.

Publish(게시) 개요

설치를 진행하지 않고, 응용 프로그램을 설치가 가능한 것이 포터블이라 한다. 그래서 C#에서 포터블을 제공하기 위해 응용 프로그램 안에 .Net Runtime 이 포함되어야 한다.

지금부터 어떻게 설정을 하고 배포하는지 아래의 그림을 통해 확인 할 수 있다.

우선 프로젝트에서 우클릭하여 게시 또는 Publish 버튼을 누르면 가능하다. 이후 게시 설정을 입력하고, 편집을 통해 .Net Runtime을 포함할 것인지 유무에서 체크하여 포함이 가능하다.

물론 이때 11번째 그림과 12번째 그림에서 용량 비교 하였을 때 12.4mb와 144kb가 차이가 있으므로 .Net Runtime의 용량은 12mb 임을 알 수 있다(.Net 6의 Console Application 기준).

파일 게시 옵션에서 단일 파일 생성, ReadyToRun 컴파일, 사용되지 않은 코드 자르기 총 3가지 옵션이 있다. 각각 단일 파일 생성 결과물의 차이는 그림 10과 그림 11의 차이이다. 그림 10이 단일 파일 생성 옵션을 종료한 예이며, 그림 11이 단일 파일 생성한 결과이다. 즉 .Net Runtime이 하나의 파일에 포함이 될 것인지, 아닌지에 대한 유무 이다.

.Net의 구조는 IL 언어가 생성이 되고 IL 언어가 함수가 호출이 되거나 필요에 의할 때 .Net Framework 또는 .Net에서 IL 언어가 어셈블리로 빌드가 되는 구조는 누구나 알고 있다. 그래서 최초 함수가 실행이 될 때 엄청 실행이 느리다. 대표적인 예로 LINQ나 Reflection이 있다. 이러한 문제를 해결하기 위해 미리 모든 명령어를 어셈블리로 컴파일한 것을 ReadyToRun이라 한다.

a a a a a a a a a a a a

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

NPU와 GPU 그리고 인공지능 컴파일 최적화에 대한 고찰

MSA 구조를 이용한 백엔드 서버 개발