성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[tree soap] 아차! f는 기억이 나는데, m은 ㅜㅜ 감사합니다!!! ^...
[정성태] 'm'은 decimal 타입의 숫자에 붙는 접미사입니다. ...
[정성태] https://lxr.sourceforge.io/ http...
[정성태] VT sequences to "CONOUT$" vs. STD_O...
[정성태] NetCoreDbg is a managed code debugg...
[정성태] Evaluating tail call elimination in...
[정성태] What’s new in System.Text.Json in ....
[정성태] What's new in .NET 9: Cryptography ...
[정성태] 아... 제시해 주신 "https://akrzemi1.wordp...
[정성태] 다시 질문을 정리할 필요가 있을 것 같습니다. 제가 본문에...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>Visual Studio 확장(VSIX) 만드는 방법</h1> <p> 요즘들어 Visual Studio에서 "Tools" / "Extensions and Updates..." 메뉴를 종종 이용하게 됩니다. 그만큼 이젠 확장 애드인들이 풍부해졌다는 이야기가 되는데요.<br /> <br /> 때로는 ^^ 여기에 자신이 만든 확장 도구를 배포하고 싶은 마음이 들 수 있는데요. 오늘은 이 방법에 대해서 알아보겠습니다.<br /> <br /> 우선, Visual Studio 확장을 만들기 위해서는 Visual Studio SDK가 있어야 합니다. 아래는 각 버전에 해당하는 것이니 그에 맞게 다운로드 해서 설치합니다. (물론 2개다 하셔도 됩니다.)<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Microsoft Visual Studio 2012 SDK ; <a target='tab' href='https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2012SDK'>https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2012SDK</a> Microsoft Visual Studio 2013 SDK ; <a target='tab' href='https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2013SDK'>https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2013SDK</a> </pre> <br /> 용량은 각각 100MB 정도하기 때문에 모두 설치해도 크게 부담은 없는 수준입니다.<br /> <br /> 이렇게 SDK를 설치하고 나면 새 프로젝트에 "Visual Studio Package"가 제공되고,<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='how_to_vsix_1.png' src='/SysWebRes/bbs/how_to_vsix_1.png' /><br /> <br /> 이를 선택하면 몇 가지 간단한 것들을 물어보는데, 그중에서 3번째 단계가 의미있습니다.<br /> <br /> <img alt='how_to_vsix_2.png' src='/SysWebRes/bbs/how_to_vsix_2.png' /><br /> <br /> 이번 실습에서는 Visual Studio의 메뉴에 항목을 추가할 것이므로 "Menu Command"만 선택했지만, 여러분들이 만들려는 확장이 있다면 그에 맞게 선택해 주시면 됩니다. 이후에 메뉴 이름을 정하는 대화창이 진행되는데 제 경우에는 "AttachDebug"라는 이름을 선택했습니다.<br /> <br /> 일단 프로젝트가 생성되면 곧바로 F5 키를 눌러 디버깅을 시작하는 경우, 새롭게 Visual Studio가 뜨게 되고 다음과 같이 "TOOLS" 메뉴에서 우리가 만든 메뉴가 추가된 것을 볼 수 있습니다.<br /> <br /> <img alt='how_to_vsix_3.png' src='/SysWebRes/bbs/how_to_vsix_3.png' /><br /> <br /> 메뉴가 선택된 경우 원하는 동작을 하고 싶다면 MenuItemCallback 메서드에 코드를 채워넣으면 됩니다. <br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='how_to_vsix_4.png' src='/SysWebRes/bbs/how_to_vsix_4.png' /><br /> <br /> <hr style='width: 50%' /><br /> <br /> 일반적으로 Visual Studio 확장을 제작하는 경우 대부분 EnvDTE 객체가 필요합니다. 기존의 Visual Studio Add-in 프로젝트에서는 이 값이 클래스 멤버로 제공되지만 VSIX 프로젝트에서는 직접 구해줘야 합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > private DTE2 _applicationObject; protected override void Initialize() { base.Initialize(); _applicationObject = (EnvDTE80.DTE2)this.GetService(typeof(EnvDTE.DTE)); // ... 생략 ... } </pre> <br /> 자, 그럼 이렇게 해서 원하는 기능을 구현한 후 빌드를 하면 exe 대신 vsix 확장자를 가진 파일이 생성됩니다. (vsix 파일은 zip 압축 형식입니다.)<br /> <br /> vsix 내부에는 빌드한 바이너리와 manifest 관련 정보를 포함하고 있기 때문에 그것 자체가 배포 단위로 동작합니다. 따라서 Visual Studio가 설치된 PC에서 vsix 파일을 더블클릭하면 Visual Studio에 의해 자동으로 설치됩니다.<br /> <br /> "Tools" / "Extensions and Updates..." 메뉴를 실행해 보면 다음과 같이 설치 유무와 "Disable", "Uninstall"까지 할 수 있습니다<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='how_to_vsix_5.png' src='/SysWebRes/bbs/how_to_vsix_5.png' /><br /> <br /> <hr style='width: 50%' /><br /> <br /> 잘 만들어진 도구를 자랑하고 싶다거나 ^^ 판매를 하고 싶다면 어떻게 해야 할까요? 간단합니다. 다음의 사이트를 방문해서,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Visual Studio 제품 및 확장 기능 ; <a target='tab' href='https://marketplace.visualstudio.com/'>https://marketplace.visualstudio.com/</a> </pre> <br /> "등록하기" 메뉴를 이용해 자신이 제작한 VSIX 파일을 업로드하면 전 세계의 Visual Studio 개발자들이 이용할 수 있게 됩니다.<br /> <br /> <img alt='how_to_vsix_6.png' src='/SysWebRes/bbs/how_to_vsix_6.png' /><br /> <br /> 참고로, Visual Studio Package를 만드는 공식 문서는 다음에서 제공됩니다. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Walkthroughs for Customizing Visual Studio By Using VSPackages ; h<a target='tab' href='https://learn.microsoft.com/en-us/previous-versions/cc138565(v=vs.140)'>https://learn.microsoft.com/en-us/previous-versions/cc138565(v=vs.140)</a> </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
9844
(왼쪽의 숫자를 입력해야 합니다.)