성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
[정성태] 저렇게 조각 코드 말고, 실제로 재현이 되는 예제 프로젝트를 압...
[정성태] Modules 창(Ctrl+Shift+U)을 띄워서, 해당 Op...
[정성태] 만드실 수 있습니다. 단지, Unity 엔진 내의 스크립트와 W...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<span> <br /> <div class='mainCenterTitle'>SandCastle 사용법 소개.</div><br /> <br /> NDoc이 더 이상의 업그레이드를 포기했다는 소식은 전에 알려드렸지요. 그런 와중에 다행히도, Microsoft가 SandCastle이라는 문서화 도구를 공개해 주었는데요. 오늘은 바로 이 "SandCastle" 프로그램을 사용하여 XML 주석 처리된 것에서 CHM 파일을 만드는 방법에 대해 소개해 드리겠습니다. 미리 말씀드리면, 이 문서를 작성하기 위해 제가 참조한 토픽은 다음의 것입니다.<br /> <br /> Creating a Chm build using Sandcastle<br /> ; http://blogs.msdn.com/sandcastle/archive/2006/07/29/682398.aspx<br /> <br /> 개인적으로는 위의 설명이 영 ^^; 탐탁치 않습니다. 위에서는 상대 경로를 사용했는데, 그것으로 인해 오히려 무척이나 힘든 경로 설정을 하게 되어 피곤해 지기 때문입니다. 그래서, 저는 아예 절대 경로 설정으로 환경을 구성했으며, 그 점으로 인해 재활용 가능한 "sandcastle.config" 파일을 얻게 되었습니다. ^^; 그 이유에 대해서는 여러분들이 일단 제가 한 방법대로 따라해 보시고, 시간 나시면 위의 토픽에 방법대로 해보시면 아시게 될 것입니다.<br /> <br /> 우선, 현재(2006-09-15) 가장 최신 버전을 다음의 경로에서 다운로드할 수 있습니다.<br /> <br /> Sandcastle - August 2006 Community Technology Preview (CTP)<br /> ; http://www.microsoft.com/downloads/details.aspx?FamilyID=e82ea71d-da89-42ee-a715-696e3a4873b2&DisplayLang=en<br /> <br /> 그다음 HTML Help Workshop을 다음의 경로에서 다운로드해야 합니다.<br /> <br /> HTML Help 1.4 SDK - Microsoft HTML Help Downloads<br /> ; http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp<br /> <br /> <hr /> <br /> 그럼 전체적인 구조를 한번 살펴볼까요? Sandcastle의 동작방식은 NDoc과는 다소 다릅니다. 아래의 그림을 보면 한눈에 이해하실 수 있을 텐데요.<br /> <br /> [출처 : SandcastleV2.ppt - http://blogs.msdn.com/sandcastle/attachment/681209.ashx]<br /> <img alt='Documentation Process using Sandcastle' src='/SysWebRes/bbs/sandcastle_howtouse_1.png' /><br /> <br /> NDoc과는 달라도 꽤나 직관적인 흐름을 갖습니다. 첫 번째 단계로, VS.NET 2005에서 XML Documentation 생성 옵션을 지정하고 빌드하면, assembly와 xml 파일들이 생기는데, assembly 쪽은 별도로 MrefBuilder.exe에서 다시 한번 변환을 한 다음, 최종 결과물들을 BuildAssembler.exe를 사용해서 가공하게 됩니다. 이때의 결과물들도 직접 CHM 파일 형태로 나오는 것이 아니라 HTML Help Workshop에서 처리할 수 있는 입력 파일입니다. 어떻게 보면 단계는 복잡해도 서로 간의 영역을 확실히 함으로써 분업화를 잘 이루었다고 볼 수 있습니다. 나온 결과물도 꽤나 멋들어집니다. ^^ 아래의 화면을 보시면 동의하실 거라 봅니다. 물론, 아직 좀 미숙한 부분도 있지만 아직 RC 버전도 아닌 CTP 버전임을 감안하면 기대해도 좋을 것 같습니다.<br /> <br /> [출처 : SandcastleV2.ppt - http://blogs.msdn.com/sandcastle/attachment/681209.ashx]<br /> <img alt='Documentation Process using Sandcastle' src='/SysWebRes/bbs/sandcastle_howtouse_2.png' /><br /> <br /> 그럼... 구미가 좀 땡기시나요? ^^ 암튼, Microsoft 역시 이 SandCastle로 MSDN 도움말을 만들었다고 하니 지속적인 업데이트는 보장된 듯합니다. NDoc 처럼 중간에 사라질 거란 걱정은 하지 않아도 된다는 얘기입니다. ^^<br /> <br /> <hr /> <br /> 자, 그럼 이제 실제로 한번 만들어봐야 맛이겠지요. 우선, 환경 설정은 위에서 소개한 "SandCastle"과 "HTML Help Workshop"을 설치하는 것입니다. (아래의 설명에서는 이 프로그램들을 "C:\Program Files" 하위에 설치했다는 것을 가정으로 합니다.)<br /> <br /> 일반적인 C# 클래스 라이브러리를 만들고 XML 주석 파일이 생성되도록 컴파일된 결과물이 있다고 가정하고 이야기를 진행해 보겠습니다. (첨부된 SandCastleExam.zip을 사용하셔도 됩니다.)<br /> <br /> 이제부터의 작업은 Sandcastle에서 하라는 대로 해주어야 하는 것만 있습니다.<br /> <br /> 0. SandCastle이 동작되기 위한 준비 작업을 합니다. 우선, 현재 빌드 결과물 폴더에서 하위로 "comments", "html", "Art", "Scripts", "Styles" 폴더를 각각 만들어 둡니다. 그 후, 다음과 같은 명령을 통해서 파일을 복사해 둡니다.<br /> <br /> <pre class='code'> copy ".\*.xml" .\comments ; 이 라인에서의 XML 파일은 현재 빌드된 프로젝트에서 생성된 XML Documentation 옵션으로 생성된 파일입니다. copy "C:\Program Files\Sandcastle\Presentation\Art\*.*" .\Art copy "C:\Program Files\Sandcastle\Presentation\Scripts\*.*" .\Scripts copy "C:\Program Files\Sandcastle\Presentation\Styles\*.*" .\Styles </pre> <br /> 1. 프로젝트 빌드 결과물에 대해서 "MRefBuilder"를 사용하여 Reflection 결과물 생성<br /> <br /> <pre class='code'> MRefBuilder .\*.dll .\*.exe /out:.\reflection.org </pre> <br /> 위의 경우에는 현재 폴더의 모든 DLL과 EXE에 대해서 Reflection 결과물을 만듭니다.<br /> <br /> 2. 위의 ORG 파일로부터 Manifest 정보를 담는 XML 파일을 생성.<br /> <br /> <pre class='code'> XslTransform /xsl:"C:\Program Files\Sandcastle\ProductionTransforms\AddOverloads.xsl" .\reflection.org /xsl:"C:\Program Files\Sandcastle\ProductionTransforms\AddGuidFilenames.xsl" /out:.\reflection.xml XslTransform /xsl:"C:\Program Files\Sandcastle\ProductionTransforms\ReflectionToManifest.xsl" .\reflection.xml /out:.\manifest.xml </pre> <br /> 3. 2번 단계에서 생성한 Manifest 정보와 특정한 Config 파일을 입력으로 각 도움말 페이지의 HTML 파일을 생성.<br /> <br /> <pre class='code'> BuildAssembler /config:sandcastle.config .\manifest.xml </pre> <br /> 이때, sandcastle.config 파일은 내용을 직접 상황에 맞게 편집하셔야 합니다. (사실, 거의 그대로 쓰셔도 됩니다. ^^) 내용이 너무 길어서, 이 파일은 첨부된 "Build 예제.zip"에 포함된 "SandCastle.config" 파일을 참고하십시오. (참고로, 모든 경로가 "C:\Program Files\sandcastle"에 sandcastle이 설치되어 있다고 맞춰져 있습니다.)<br /> <br /> 4. Reflection.xml로부터 HHC, HHP, HHK 파일을 생성.<br /> <br /> <pre class='code'> XslTransform /xsl:"C:\Program Files\Sandcastle\ProductionTransforms\ReflectionToChmProject.xsl" .\reflection.xml /out:.\test.hhp XslTransform /xsl:"C:\Program Files\Sandcastle\ProductionTransforms\ReflectionToChmContents.xsl" .\reflection.xml /arg:html=.\html /out:.\test.hhc XslTransform /xsl:"C:\Program Files\Sandcastle\ProductionTransforms\ReflectionToChmIndex.xsl" .\reflection.xml /out:.\test.hhk </pre> <br /> 이러한 파일들은 모두 HTML Help Workshop의 입력 파일로 지정됩니다.<br /> <br /> 5. HHC 컴파일러를 통해서 최종적으로 CHM 파일을 생성.<br /> <br /> <pre class='code'> hhc .\test.hhp </pre> <br /> 이때, 3번 단계에서 생성한 HTML 파일들과 함께 CHM 결과물이 생성되게 됩니다.<br /> <br /> <hr /> <br /> 과정은 위와 같은데, 다소 복잡해 보이긴 해도 간단한게 배치 파일 하나만 만들어 놓으면 모든 과정을 자동화시킬 수 있습니다. <br /> <br /> 여러분들이 쉽게 실습을 할 수 있도록 제가 모든 파일을 만들어 놓았으니 첨부된 파일을 가지고 다음의 단계를 따라해 보시면 쉽게 CHM 결과물을 보실 수 있으니 참고하십시오.<br /> <br /> 1. 첨부된 SandCastleExam.zip 파일을 다운로드해서 릴리스 빌드합니다.<br /> <br /> 2. 첨부된 Build 예제.zip 파일을 압축 해제해서, "[솔루션 폴더]\bin\Release" 폴더에 복사합니다.<br /> <br /> 3. "Build.bat" 파일을 실행하면, SandCastle 관련 빌드 작업이 수행되고 test.chm 파일이 생성되는 것을 확인할 수 있습니다.<br /> <br /> ^^ 간단하지요. 이젠 "Build.bat" 파일과 "SandCastle.config" 파일을 여러분들의 구미에 맞게 수정하시기 바랍니다.<br /> <br /><br /><hr /><span style='color: Maroon'>[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </span>
첨부파일
스팸 방지용 인증 번호
1200
(왼쪽의 숫자를 입력해야 합니다.)