윈폼 프로그램을 맥, 리눅스에서 빌드하기(?!)

마이크로소프트가 오픈소스 프로젝트를 진행하면서 모노(Mono)를 이용한 크로스플랫폼 지원한다는 이야기를 많이 들었을 것이다. 사실 모노로 가지고 그대로 개발한다면서 Gtk#을 이용하고 하는 사람들도 있고, Xamarin을 결재해서 하는 사람들도 많다.

근데 기존에 Visual Studio를 통해 개발했던 프로젝트들, 특히 윈폼 프로젝트의 경우에는 코드 변환을 해야 하는지 그대로 이용해야 하는지 모르는 사람들이 많다. 국내에서 아직 Mono를 많이 쓰는 걸 본 적이 없어서 그런지 정보도 별로 없다. 있어도 대부분 모바일 크로스플랫폼을 위해 이용하던 방법들이 많고…

게다가 전에 윈도우 프로그래밍을 하라고 했을 때에도 “그럼 맥용, 리눅스용 따로 만들어야되요?” 라고 질문도 받긴 했다. (사실 자바 쓰면 그럴 일 없겠지만… 개발에 환경설정에 이런 저런 시간 좀 더 덜쓰는 쪽을 먼저 알려주고 싶었을 뿐이었고, 실제로도 쓸 수 있는 걸 보여주고 싶으니깐.)

간단하다 xbuild 명령어를 통해 직접 빌드를 진행하면 된다.

스크린샷 2016-03-10 오후 12.57.54

*주의: xbuild의 경우에는 make와 같은 빌드 명령처럼 쓰이기 때문에 모노를 전체 설치한 경우에 이용하기 쉽다. 맥의 경우에는 pkg를 통해서 설치했으면 별 문제 없겠지만, 리눅스의 경우에는 만약 전체 설치 안되어있다면 전체 설치를 권장한다.

사용법을 맥북에서 녹화해서 직접 유튜브에 올렸다.

실행 동영상

이로써 맥, 리눅스에서 이용할 수 있는 방법을 공유했다. 단, 이걸로도 지원이 안되는 부분이 있다.

  • 프로젝트 내부에 있는 COM 레퍼런스 파일들은 무시된다.
  • VC++, vdproj(Setup and Deployment) 프로젝트의 경우에는 지원되지 않는다.

즉, 간단하게 보면 C#으로 짠 프로그램에 한해서만 보면 된다. 자세한 내용은 아래의 링크 주소를 통해서 확인할 수 있다.

http://www.mono-project.com/docs/tools+libraries/tools/xbuild/

윈폼이란…?

윈도우에서 프로그램을 개발할 때, 옛날부터 써왔던 환경이 윈폼 환경입니다.

지금도 씁니다. 오래된 만큼 노하우와 코드 검증이 많이 되어있기 때문에 무시할 수는 없습니다.

단, 아시아의 어느 반도처럼 특정 버전의 윈도우만 고집하고, 특정 버전의 IE만 고집하면서 여전히 6.0 버전대로 개발하는 특수한 케이스 좀 어떻게 안되나 싶을 때도 있습니다. (ㅡㅅㅡ)ㅗ (그나마 깨어있는 분들 덕에 조금씩 버전 업 되고 있는 건 좋은 일이라 봅니다…;ㅅ;)

WPF보다 화려한 화면을 구성하고 하는 건 없지만, 그만큼 프로그램이 사용하는 리소스가 적다는 것도 좋은 이유가 될 수도 있고…

뭐, 쓰려면 또 제대로 쓰는 것이다 보니 여러모로 잡소리 좀 적어보려 합니다.

p.s. 코드로 하나하나 강의하는 건 아마 없을 겁니다. ㅡㅅㅡ

WPF 튜토리얼을 잘 정리한 사이트가 있어서 추천합니다.

보통 그냥 뒤지고 하다보면 hoons 닷넷이나 다른 한국 사이트에서 질문 던져놓고 부분 답변한 걸로 대충 땜빵하고 하는 게 어려워서 튜토리얼과 예제를 보면서 작업들을 합니다. 특히 초보때. ㅇㅅㅇ;;

그때 시간을 그나마 단축할 수 있는 것이 MSDN에 익숙해지는 것과, 좋은 튜토리얼이 있는 사이트를 보는 것인데…

(이 둘이 잘 되면 의외로 엄청 빠른 개발을 하는 본인을 볼 수 있을 것입니다. 여러분의 언어 실력과는 상관 없이 말이죠. ㅡㅅㅡ;;)

그래서 튜토리얼 사이트도 하나 추천합니다.

http://www.wpftutorial.net/

http://www.wpf-tutorial.com/

위의 두 사이트는 영어로 구글링하면 상당히 잘 나오는 사이트입니다. 그만큼 부분 부분마다 어느정도 정리를 해서 써놨다는 것이죠.

UI 개발 시에는 하나 하나에 대해서 신경쓸 것이 많다 보니 부분 부분마다 확인해 봐야 하는 것들이 많습니다. 그렇다고 그걸 죄다 MSDN으로만 찾아서 보기에는 너무 방대합니다. 그럴 때, 저런 튜토리얼을 익혔다면 그나마 쉽게 이용할 수 있는 것이 MSDN입니다.

WPF 처음 공부하려 할 때라던가, 갑자기 WPF를 써봐야 할 때라면 반드시 도움이 될 것입니다.

p.s. MSDN이 빡치는 건 첨부터 저 많은 색인을 뒤져가며 찾아야 하는 것과 어정쩡한 번역입니다.

윈도우 프로그래밍은 꼭 정품 비주얼 스튜디오를 써야 하나?

http://www.visualstudio.com/ko-kr/products/visual-studio-express-vs

비주얼 스튜디오 익스프레스를 MS에서 제공해 주고 있습니다. MS는 자사의 익스프레스 제품을 통해 개발할 때 자신들의 익스프레스 제품을 이용하여 자유롭게 개발을 해볼 수 있도록 지원해 주고 있죠.

근데 이게 골때립니다. 상용 비주얼 스튜디오가 상당히 비싸기 때문에 회사에서 익스프레스로 개발해서 쓰는 상황을 볼 때가 있긴 합니다. (대놓고 익스프레스로만 개발하라는 사장도 있습니다. 진짜로)

그래서… 무지하게 관련 내용을 뒤져본 적이 있습니다. 일단 결론부터 적겠습니다.

결론: 회사에서 프로그램 창작을 할 때 익스프레스 버전을 사용해도 되나, 익스프레스로 개발한 프로그램을 회사에서 상업적 용도로 배포할 수는 없다.

MS랑 상의하던가 MSDN 구독해 주세요. ㅡㅅㅡ 소규모 기업이면 아마 싸게 지원해 주는 것도 있는 걸로 알고있습니다.

그러나, 자유로운 창작을 위해 써도 된다는 건 공부할 때 써도 된다는 내용입니다. ㅇㅅㅇ 공부할 땐 라이센스 제약 덜받는 익스프레스 버전 써주세요. 그게 나중에 본인한테 피해 덜받는 방법입니다. MS는 상당히 라이센스에 민감한 기업입니다.

갑자기 뜬금없이 이 글을 왜 썼냐고 물으실텐데… 제가 예~전에 C#과 닷넷 공부할 때, 몇몇 영문 사이트에서 알려준 방법이 한국에서는 아직 들어오진 않았는데, 그 내용 보고 질문하는 사람 생길까봐서 그렇습니다.

익스프레스 버전을 받고, 그 안에 같이 설치되어 나오는 CSC(C# Compiler)를 가지고 커멘드 라인에서 컴파일해서 공부하는 방법을 써놓은 글들이 상당히 많습니다. 저게 어디까지 가냐면요… 메모장으로 코딩해서 프로그램 뚝딱 짜놓고 릴리즈 판으로 빌드까지 완전히 끝내는 방법도 나옵니다. 그걸로 멋대로 배포하는 글도 있긴 한데.. 지금은 찾기 힘들군요.

근데 중요한 건, 저건 그냥 지인들끼리 잠깐 돌리고 하는 방법으로 쓰는 것 중 하나일 뿐입니다. 아님 단순히 이렇게도 쓸 수 있다고 알려주는 용도이거나요. ㅡㅅㅡ (여러분이 찰스 페졸드 아저씨처럼 MSDN의 모든 내용을 다 머릿속에 넣어두고 있다면 그렇게 프로그래밍 해도 됩니다만 그래도 상업 배포는 안됩니다. ㅇㅅㅇ) 실제로 돈을 받고 배포할 목적이라면 비주얼 스튜디오 정품을 구하시거나 MSDN을 구독하세요.

p.s. 규링도 MSDN 구독중입니다.

WPF를 공부할 때 좋은 책

요즘 WPF를 쓰고 있습니다. win32 프로그래밍 할 시기는 아닌 거 같고(해도 상관은 없지만…. 요즘 윈도우 아키텍쳐의 추세 상 안쓰는 걸 권장합니다), MFC 다시 쳐다보고 싶진 않고… 뭐, 어쩌다 보니 그냥 UI는 WPF로 하자란 결론이 나서 하고 있습니다만…

근데 WPF에 대해서는 “그냥 공부 좀 해두면 좋은 것이다”란 의식들이 강해서 그런건지 어떤지는 모르겠습니다만… 서적이 적습니다. 뭐, 대부분의 자료가 MSDN에 나와 있어서 어렵지 않게 공부할 수 있지만…. “그래도 난 굳이 책이 있어야 한다!” 라고 하시는 분들을 위해서 제가 지금 보는 책을 올릴께요.

왜 저 두 책이냐고 물으면 이렇게 대답하겠습니다.

“이 글을 쓰고 있는 당시 교보문고에서 절판되지 않은 WPF 책임. ㅡㅅㅡ”

책을 사려는 입장에서는 중요하죠. ㅇㅅㅇ

우선 저 밑에 있는 찰스 페졸드 아저씨의 책은…. 다들 아실 껍니다. 진짜 어렵습니다. 만약 이 글을 보고 계신 분이 “:난 찴스 아저씨와 똑같은 성격의 프로그래밍 하는 게 좋아서 밑에껄 봐야겠어!” 라고 하기엔 본인 실력은 뭔가 부족하죠. 게다가 아는 것도 적어요. (저 아저씨의 평을 생각하면 당연한 이야기) 그걸 어느정도 채워주면서 빠른 사용을 할 수 있는 게 위에 있는 책입니다. 저 두 책을 병행하면 다이나믹한 UI를 개발하는 데 필요한 건 다 해보실 수 있을 것이라고 보고 있습니다.