Microsoft MVP성태의 닷넷 이야기
VS.NET IDE: 78. Visual Studio 확장으로 XmlCodeGenerator 제작하는 방법 [링크 복사], [링크+제목 복사],
조회: 28312
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 4개 있습니다.)
(시리즈 글이 6개 있습니다.)
VS.NET IDE: 77. Visual Studio 확장(VSIX) 만드는 방법
; https://www.sysnet.pe.kr/2/0/1515

VS.NET IDE: 78. Visual Studio 확장으로 XmlCodeGenerator 제작하는 방법
; https://www.sysnet.pe.kr/2/0/1518

VS.NET IDE: 115. Visual Studio 확장(VSIX)을 이용해 사용자 메뉴 추가하는 방법
; https://www.sysnet.pe.kr/2/0/11184

VS.NET IDE: 116. Visual Studio 확장(VSIX)을 이용해 사용자 메뉴 추가하는 방법 (2) - 동적 메뉴 구성
; https://www.sysnet.pe.kr/2/0/11185

VS.NET IDE: 117. Visual Studio 확장(VSIX)을 이용해 사용자 매크로를 추가하는 방법
; https://www.sysnet.pe.kr/2/0/11186

VS.NET IDE: 165. Visual Studio 2022를 위한 Extension 마이그레이션
; https://www.sysnet.pe.kr/2/0/12682




Visual Studio 확장으로 XmlCodeGenerator 제작하는 방법

Visual Studio Package 만드는 방법도 알았으니,

Visual Studio 확장(VSIX) 만드는 방법
; https://www.sysnet.pe.kr/2/0/1515

실습을 한번 해봐야죠. ^^ 메뉴 추가하는 거야 너무 쉬우니, 예전에 만들어 둔 XmlCodeGenerator를 이참에 Visual Studio Package 프로젝트로 포팅해봐야겠습니다.

XML/XSLT로 구현하는 매크로 확장
; https://www.sysnet.pe.kr/2/0/542

XmlCodeGenerator 1.0.0.4 업데이트
; https://www.sysnet.pe.kr/2/0/760

XmlCodeGenerator를 C/C++ 코드 생성에 적용
; https://www.sysnet.pe.kr/2/0/775




VSPackage 프로젝트로 만드는 Single File Generator에 대한 자세한 문서가 Microsoft에 의해 공개되어 있습니다.

Single File Generator
; http://codemsdn.answerabc.com/sfgdd

Single_File_Generator_Sample.docx
; http://codemsdn.answerabc.com/Single-File-Generator-94d856d4/file/112/0/Single_File_Generator_Sample.docx

VSPakcage를 이용하는 경우 Single File Generator가 2가지 면에서 간단해지는데요.

  1. 등록 과정을 Visual Studio가 대행해 주므로 그와 관련된 코드가 필요 없어짐.
  2. 기존에 따로 포함했던 BaseCodeGeneratorWithSite가 Visual Studio 관련 어셈블리에 미리 포함되어 있음.

특히, 등록 과정을 신경쓸 필요 없다는 가장 큰 희소식입니다. ^^

자, 그럼 만들어 볼까요?

새롭게 Visual Studio Package 프로젝트를 생성하고, 3번째 단계에서 소스코드 생성과 관련있는 것이 없기 때문에 이번에는 비어있는 체로 넘어갑니다.

vsp_xmlcodegen_1.png

프로젝트가 생성되었으면 다음의 3가지 어셈블리를 참조 추가합니다.

  • Microsoft.VisualStudio.TextTemplating.VSHost.11.0
  • VSLangProj80
  • Microsoft.VisualStudio.Designer.Interfaces

마지막으로 BaseCodeGeneratorWithSite 타입을 상속받아 원하는 동작의 Single_File_Generator 코드를 구현한 후 다음과 같이 특성을 부여해 주면 레지스트리 등록 과정이 자동으로 처리됩니다.

[Guid(XmlCodeGenerator.RefGuid)]
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[CodeGeneratorRegistration(typeof(XmlCodeGenerator), "C# XML Code Generator", vsContextGuids.vsContextGuidVCSProject, GeneratesDesignTimeSource = true)]
[CodeGeneratorRegistration(typeof(XmlCodeGenerator), "VB XML Code Generator", vsContextGuids.vsContextGuidVBProject, GeneratesDesignTimeSource = true)]
[ProvideObject(typeof(XmlCodeGenerator))]
public class XmlCodeGenerator : BaseCodeGeneratorWithSite
{
    // ...[생략]...
}

정말 쉽죠. ^^ 이렇게 만들고 빌드하면 vsix 확장자 파일이 생기고 이를 배포해 주면 됩니다. 하는 김에 Visual Studio Gallery에 올려봤습니다.

Visual Studio Gallery - XmlCodeGenerator
; http://visualstudiogallery.msdn.microsoft.com/20163975-c675-4f1c-986f-d2489136469d

그래서 이젠 Visual Studio의 확장 도구에서 다음과 같이 검색됩니다. ^^

vsp_xmlcodegen_2.png

전체 소스코드는 다음에 공개해 두었으니 참고하세요.

XmlCodeGenerator 
; https://github.com/stjeong/XmlCodeGenerator




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 7/8/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 76  77  78  [79]  80  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
11994정성태7/22/201922747개발 환경 구성: 454. Azure 가상 머신(VM)에서 SMTP 메일 전송하는 방법파일 다운로드1
11993정성태7/22/201917508오류 유형: 561. Dism.exe 수행 시 "Error: 2 - The system cannot find the file specified." 오류 발생
11992정성태7/22/201919763오류 유형: 560. 서비스 관리자 실행 시 "Windows was unable to open service control manager database on [...]. Error 5: Access is denied." 오류 발생
11991정성태7/18/201916750디버깅 기술: 128. windbg - x64 환경에서 닷넷 예외가 발생한 경우 인자를 확인할 수 없었던 사례
11990정성태7/18/201918702오류 유형: 559. Settings / Update & Security 화면 진입 시 프로그램 종료
11989정성태7/18/201917524Windows: 162. Windows Server 2019 빌드 17763부터 Alt + F4 입력시 곧바로 로그아웃하는 현상
11988정성태7/18/201920785개발 환경 구성: 453. 마이크로소프트가 지정한 모든 Root 인증서를 설치하는 방법
11987정성태7/17/201926736오류 유형: 558. 윈도우 - KMODE_EXCEPTION_NOT_HANDLED 블루스크린(BSOD) 문제 [1]
11986정성태7/17/201918391오류 유형: 557. 드라이브 문자를 할당하지 않은 파티션을 탐색기에서 드라이브 문자와 함께 보여주는 문제
11985정성태7/17/201918376개발 환경 구성: 452. msbuild - csproj에 환경 변수 조건 사용 [1]
11984정성태7/9/201926635개발 환경 구성: 451. Microsoft Edge (Chromium)을 대상으로 한 Selenium WebDriver 사용법 [1]
11983정성태7/8/201915793오류 유형: 556. nodemon - 'mocha' is not recognized as an internal or external command, operable program or batch file.
11982정성태7/8/201915835오류 유형: 555. Visual Studio 빌드 오류 - result: unexpected exception occured (-1002 - 0xfffffc16)
11981정성태7/7/201919280Math: 64. C# - 3층 구조의 신경망(분류)파일 다운로드1
11980정성태7/7/201929048개발 환경 구성: 450. Visual Studio Code의 Java 확장을 이용한 간단한 프로젝트 구축파일 다운로드1
11979정성태7/7/201919988개발 환경 구성: 449. TFS에서 gitlab/github등의 git 서버로 마이그레이션하는 방법
11978정성태7/6/201919195Windows: 161. 계정 정보가 동일하지 않은 PC 간의 인증을 수행하는 방법 [1]
11977정성태7/6/201923655오류 유형: 554. git push - error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large
11976정성태7/4/201918127오류 유형: 553. (잘못 인증 한 후) 원격 git repo 재인증 시 "remote: HTTP Basic: Access denied" 오류 발생
11975정성태7/4/201926618개발 환경 구성: 448. Visual Studio Code에서 콘솔 응용 프로그램 개발 시 "입력"받는 방법
11974정성태7/4/201922722Linux: 22. "Visual Studio Code + Remote Development"로 윈도우 환경에서 리눅스(CentOS 7) C/C++ 개발
11973정성태7/4/201921127Linux: 21. 리눅스에서 공유 라이브러리가 로드되지 않는다면?
11972정성태7/3/201925327.NET Framework: 847. JAVA와 .NET 간의 AES 암호화 연동 [1]파일 다운로드1
11971정성태7/3/201920953개발 환경 구성: 447. Visual Studio Code에서 OpenCvSharp 개발 환경 구성
11970정성태7/2/201920170오류 유형: 552. 웹 브라우저에서 파일 다운로드 후 "Running security scan"이 끝나지 않는 문제
11969정성태7/2/201920669Math: 63. C# - 3층 구조의 신경망파일 다운로드1
... 76  77  78  [79]  80  81  82  83  84  85  86  87  88  89  90  ...