10. .NET 어셈블리
10.5 XML 문서 파일
이번에는 라이브러리를 만들 때 사용하는 곳에서 Microsoft Visual Studio의 인텔리센스 기능을 활용할 수 있게 해 봅시다.
프로젝트 속성 창에서 빌드 탭을 선택하여 XML 문서 파일을 체크하세요.
[그림 56] XML 문서 파일 출력 설정
그리고 빌드하면 공개된 멤버 형식에 주석이 없다는 경고 메시지가 나타납니다. XML 문서 파일 출력을 설정하면 가시성이 public인 형식과 멤버에 대한 세 줄 주석으로 XML 양식에 맞는 설명이 없으면 경고 메시지가 뜹니다. 다음과 같이 코드를 약간 변경한 후에 주석을 달아봅시다.
▶ XML 양식에 맞게 세 줄 주석 달기
using System;
namespace DemoLib { /// <summary> /// 데모 클래스 /// </summary> public class DemoClass { /// <summary> /// Foo 메서드 /// </summary> /// <param name="a">첫번째 인자 </param> /// <param name="b">두번째 인자 </param> /// <returns> 첫번째 인자 + 두번째 인자 </returns> public int Foo(int a,int b) { Console.WriteLine("a:{0} b:{1}",a,b); return a + b; } } } |
다시 빌드하시면 경고가 사라지고 출력 폴더에 가 보면 XML 파일이 생긴 것을 확인할 수 있습니다.
▶ XML 출력 파일 내용
<?xml version="1.0"?> <doc> <assembly> <name>DemoLib</name> </assembly> <members> <member name="T:DemoLib.DemoClass"> <summary> 데모 클래스 </summary> </member> <member name="M:DemoLib.DemoClass.Foo(System.Int32,System.Int32)"> <summary> Foo 메서드 </summary> <param name="a">첫 번째 인자</param> <param name="b">두 번째 인자</param> <returns> 첫 번째 인자 + 두 번째 인자</returns> </member> </members> </doc> |
그리고 콘솔 응용 프로그램을 생성한 후에 라이브러리를 참조 추가하고 천천히 Demo 형식의 개체를 생성하고 Foo 메서드를 호출하는 구문을 추가해 보세요. 다음처럼 인텔리센스 기능이 작동하여 메서드가 무엇을 의미하는지 인자가 무엇인지 설명하는 구문을 확인할 수 있습니다. 물론, 풍선 도움말에 나타나는 것은 XML 형식에 맞게 작성한 세 줄 주석에 작성한 내용입니다.
[그림 57] 인텔리센스 작동 화면
여러 명이 팀 작업을 할 때 이와 같은 기능은 많은 도움을 줍니다. 평소에도 XML 문서 출력 속성을 설정하여 세 줄 주석을 다는 것을 습관화하세요. 자신이 작성한 라이브러리도 사용하기 편하고 다른 동료도 여러분이 만든 라이브러리를 사용하기 편해질 것입니다.
너와 나의 연결고리 "공감"
'언어 자료구조 알고리즘 > Escort C#' 카테고리의 다른 글
[C#] 12. 직렬화 및 리플렉션 - 직렬화 (0) | 2016.05.16 |
---|---|
[C#] 11. 예외 처리 - 파생 관계의 예외 잡기 (0) | 2016.05.16 |
[C#] 11. 예외 처리 - 예외 클래스 (0) | 2016.05.16 |
[C#] 11. 예외 처리 - 예외처리 구문 (0) | 2016.05.16 |
[C#] 10. .NET 어셈블리 - 모듈 작성 (0) | 2016.05.03 |
[C#] 10. .NET 어셈블리 - 공용 어셈블리 (0) | 2016.05.03 |
[C#] 10. .NET 어셈블리 - 전용 어셈블리 (0) | 2016.05.03 |
[C#] 10. .NET 어셈블리 - 어셈블리 만들기 (0) | 2016.05.03 |
[C#] 10. .NET 어셈블리 - .NET 어셈블리 구성 요소 (0) | 2016.05.03 |
[C#] 9. 대리자와 이벤트 - 이벤트 (0) | 2016.05.03 |