Visual Studio Integration Package 프로젝트를 이용하여 [Umc Projects/Umc.Core] - Umc.Core 란?
와 Visual Studio 의 통합하려고 합니다. Visual Studio Addin 은 [Umc Projects/VSHelper] - VSHelper 1.0 - Visual Studio 의 부족함을 채워주는... 와 같이 단순히 Visual Studio 의 DTE 인터페이스를 이용하여 말 그대로 Addin(애드인)을 만들 수 있습니다. 반면, Visual Studio Integration Package 는 개체와 컨테이너간의 명령 전달로 Visual Studio 를 보다 세부적이고 구체적으로 접근하여 Visual Studio 의 일부로 흡수 할 수 있습니다.
기본적인 동작에도 차이점이 있습니다. Visual Studio Addin 은 비주얼스튜디오 구동과 함께 Addin 어셈블리가 로드됩니다. 하지만 Visual Studio Package 는 VSCTCompile 가 컴파일한 디자인만 로드하고, 실제 어셈블리 로드는 MouseOver 나 실제 사용자의 액션이 있을 때 비로소 어셈블리가 로드됩니다.
작업을 시작하자마자 삽질은 시작되었습니다. 삽질의 시작은 윈도우 클래스 라이브러리로 생성하여 작업을 시작했던 것이 화근이었습니다. 그냥 편하게 Visual Studio Integration Package 프로젝트를 생성하였더라면 하루라는 시간을 아낄 수 가 있었는데 말이죠.
1. Visual Studio Integration Package Project 로 변환하기
우선 프로젝트 파일에 다음과 같은 XML Element 를 만들어 주셔야 합니다.
<PropertyGroup>
<RegisterOutputPackage>true</RegisterOutputPackage>
<RegisterWithCodebase>true</RegisterWithCodebase>
</PropertyGroup> |
위와 같이 프로젝트를 변경하시면 정상적으로 컴파일이 될 겁니다.
2. .vsct 빌드 작업 지정하기
하지만 일반 클래스 라이브러리일 경우 또 하나의 문제에 봉착하게 됩니다. 바로 .vsct 라는 Package 의 디자인과 명령을 처리하는 XML 파일은 곧바로 오류를 내뱉을테니까요.
오류는 다음과 같습니다.
The destination resource can be omitted only if there is exactly one resource file to merge |
이런 오류 메시지는 다시 프로젝트의 XML 구문을 다음과 같이 추가해 주시면 됩니다.
<EmbeddedResource Include="VSPackage.resx">
<MergeWithCTO>true</MergeWithCTO>
<SubType>Designer</SubType>
</EmbeddedResource> |
쉽게 의역하자면, .vsct 파일이 똥인지 된장인지 구분을 못한다고 하네요. 이 파일은 빌드 작업을 VSCTCompile 로 변경을 해 주셔야 합니다.
[그림1] .vsct 는 빌드 작업을 VSCTCompile 로 변경
괜한 오기에 포기하지 않고 클래스 라이브러리 프로젝트로 작업 하는 중 여기까지의 삽질은 솔직히 삽질도 아니었습니다. 이 다음의 삽질은 정말 생각만 해도… onu
3. .vsct 파일은 루트에 위치시키자
제가 만든 프로젝트의 .vsct 파일은 프로젝트의 루트가 아닌 솔루션 폴더 하위에 존재하도록 구성하였습니다. .vsct 를 VSCTCompile 타입으로 변경하였고 특별히 VS Integration Project 와 다른 부분을 못 찾았음에도 다음과 같은 오류를 내뱉고 있었습니다.
[그림2] 솔루션 폴더에 위치한 .vsct 파일
CtoResourceMerger 작업중 예상치 못한 오류가 발생하였습니다. System.IO.FileNotFoundException |
해결방법은 더욱 더 어처구니 없었습니다. 이 문제는 .vsct 파일을 프로젝트의 루트로 옮기면 됩니다. 그럼 더 이상 위와 같은 오류는 나지 않습니다만, 다시 .vsct 파일을 솔루션 폴더로 이동하였음에도 불구하고 더 이상 위의 오류는 나지 않는다는 것입니다. 그리고 전 이런 어이없는 결과에 10분 동안 멍~ 하니 모니터만 바라보고 있었답니다 ^^; 정말 재미있는 현상이었습니다.
Visual Studio Package 를 개발하시는 분들의 위해 서비스로 URL 하나 드립니다.
PS. 촛불 집회 실시간 생방송을 보면서
집에 와서 내내 촛불 집회를 오마이뉴스 생방송을 통해 보고 있는데, 시간가는 줄 모르고 재미있게 보고 있습니다. 생방송 중에 청와대 홈페이지를 다운시키자는 제의가 있었고, 청와대 홈피를 다운시키는데 이곳의 네티즌과 함께 공언했답니다^^
채 얼마 되지도 않아 1분만에 청와대 홈페이지는 다운이 되었고, 1시간 후에 정말 기막히게 청와대 홈페이지는 되살아 났습니다. 어떻게 된 건지 다시 청와대 홈페이지를 방문해 보았는데, 사이트 관리자 분 정말 톡톡 튀는 아이디어 높게 삽니다.
바로, 사이트 전체를 통 이미지로 바꾸어 버렸더군요. 대략 난감하면서도 대단하네요 ㅎㅎ