Microsoft MVP성태의 닷넷 이야기
사용 사례 : 1. VS.NET 통합 환경에서 XSDObjectGen 실행 [링크 복사], [링크+제목 복사],
조회: 2850
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

[물론, 이것을 테스트하시려면, SmallTool 을 클라이언트에 설치하셔야 합니다.]

XSDObjectGenerator 에 대해 잠시 소개를 드리면, XSD 스키마에 기반해서 .NET Entity 클래스를 생성하는 것이라고 보시면 됩니다.

예를 들어, 아래와 같은 유형의 XSD 파일을 여러분들이 정의하시면.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DataTypes" targetNamespace="http://tempuri.org/DataTypes.xsd"
 elementFormDefault="qualified" xmlns="http://tempuri.org/DataTypes.xsd"
 xmlns:mstns="http://tempuri.org/DataTypes.xsd"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="TFSAddItemT">
    <xs:attribute name="Name" type="xs:string" />
    <xs:attribute name="Port" type="xs:int" />
  </xs:complexType>
</xs:schema>

VS.NET 2005 에서는 다음과 같이 XSD Designer 화면을 통해서 TFSAddItemT Complex Type 이 정의된 것을 확인해 보실 수 있습니다.

XSD Complex Type

자, 그럼 위와 같이 정의된 XSD 파일을 XSDObjectGen.exe 파일에 다음과 같은 명령행으로 실행을 시키면 C# 클래스 파일이 생성되게 됩니다.

xsdobjectgen.exe DataTypes.xsd /l:cs /f:test.cs /n:WebLib.Test

실행한 후에는, "test.cs" 라는 파일이 생성되는 데 VS.NET 2005 의 클래스 디자이너로 보면 다음과 같이 정의되어져 있습니다.

Class Diagram 에서 확인

자동 생성된 이 클래스를 실제로 다음과 같이 사용을 하실 수 있습니다.

        private void Form1_Load(object sender, EventArgs e)
        {
            TFSAddItemT item = new TFSAddItemT();
            item.Name = "MyName";
            item.Port = 80;
        }



다 좋은데... ^^ 한가지 별로 멋있지 않은 면이 있습니다. 위의 단계에서 XSD 를 C# 클래스로 변환하는 것을 명령행에서 (보통 batch 파일을 이용합니다.) 처리를 한다는 것입니다.

하지만, 여러분들이 SmallTool 을 설치했다면 이젠 그렇게 하실 필요없습니다.
방법은 매우 간단합니다.

아래와 같이 해당 XSD 파일을 클릭하고, "Custom Tool" 에 "STXSDObjectGen" 이라고 주면 그만입니다.

XSD 파일에 대해 Custom Tool 지정

위의 그림에서 보시는 것처럼, DataTypes.xsd 파일 하위로 DataTypes.cs 파일이 생성됩니다. 물론, DataTypes.xsd 파일을 편집하고 "저장" 하기를 하는 순간, DataTypes.cs 파일도 내용이 그대로 반영됩니다. 소스 세이프 등에서의 체크아웃도 자동으로 이뤄집니다. ^^

그럼... 좀 편해질 수 있겠지요. ^^







[최초 등록일: ]
[최종 수정일: 6/24/2006]

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

비밀번호

댓글 작성자
 




1  [2] 
NoWriterDateCnt.TitleFile(s)
5정성태12/24/20043496성태의 게시판 구현이론: SysnetBoard
9이일렬1/6/20042752    답변글 [답변]: 성태의 게시판 구현이론: SysnetBoard
10정성태1/17/20041516        답변글 [답변]: 성태의 게시판 구현이론: SysnetBoard
14정성태12/24/20041609    답변글 [답변]: SQL Server 2005 에서 달라지는 쿼리
16정성태5/17/20051391    답변글 Improving Application Performance by Implementing Paginated Lists
4정성태7/23/20032211리스트 ActiveX 컨트롤 ( XML 데이터 기반 )
3정성태7/23/20032538트리 ActiveX 컨트롤 ( XML 데이터 기반 ) [2]
2정성태7/23/20033333문자열 암호화 (RSA, MD5, 대칭) COM 개체
13이강구4/28/20042221    답변글 [질문]: 문자열 암호화 ( RSA, MD5, 대칭 ) COM 개체
15정성태3/4/20051744        답변글 [답변]: [질문]: 문자열 암호화 ( RSA, MD5, 대칭 ) COM 개체
1정성태7/23/20032358멋있는 바탕화면 설치 프로그램파일 다운로드1
1  [2]