[.NET/ASP.NET] - Custom Config 에 Intellisence 날개를 달자
[.NET/Visual Studio] - Custom Extension 에 Intellisence 날개를 달자

Custom Extension Intellisence ( 사용자 확장자 자동완성 기능 )

지난 [.NET/ASP.NET] - Custom Config 에 Intellisence 날개를 달자 로 Custom Config 를 더 효율적으로 사용하고자 Intellisence(자동완성) 기능을 넣는 방법을 알아보았습니다. 이번에는 Custom Extension(확장자) 에 Intellisence 를 넣는 방법입니다. 제 블로그를 관심있게 구독하셨다면 약간의 응용으로 가능할겁니다. 그렇다면 어떤 방법을 통해 Custom Extension 에 Intellisence 기능을 넣을까요?

우선 Custom Extension 은 XML 형식이어야 합니다. Web.Config / App.Config / .Sitemap / .Html 파일과 같은 XML 형태의 파일에 자동완성 기능을 제공합니다. 이 다양한 XML 형식들은 각각 개별의 XML Schema 파일이 존재하며[.NET/ASP.NET] - Custom Config 에 Intellisence 날개를 달자
 포스트에서 이미 언급을 한 적이 있습니다.

그렇다면, 이 각각의 XML Schemas 를 관리하는 XML 문서가 있을 거라는 추측을 할 수 가 있는데요. 맞습니다. 이 XML Schemas 를 관리하는 XML 이 있습니다.

 

catalog.xml

바로 이 catalog.xml 이 XML Schemas 를 관리하는 XML 입니다. 이 XML 은 이미 언급했었던 %ProgramFiles%\Microsoft Visual Studio 9.0\Xml\Schemas 에 존재합니다. ( VS2005 는 Visual Studio 8.0 폴더입니다 )

    1 <SchemaCatalog xmlns="http://schemas.microsoft.com/xsd/catalog">

    2   <Schema href="%InstallRoot%/Common7/IDE/Policy/Schemas/TDLSchema.xsd"

    3           targetNamespace="http://www.microsoft.com/schema/EnterpriseTemplates/TDLSchema"/>

    4   <Schema href="%InstallRoot%/Common7/IDE/Policy/Schemas/Policy.xsd"

    5           targetNamespace="http://schemas.microsoft.com/VSPolicy/PDLSchema"/>

    6   <Schema href="%InstallRoot%/xml/schemas/%LCID%/snippetformat.xsd"

    7           targetNamespace="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"/>

    8   <Schema href="%InstallRoot%/xml/schemas/%LCID%/vstemplate.xsd"

    9           targetNamespace="http://schemas.microsoft.com/developer/vstemplate/2005"/>

   10   <Schema href="%InstallRoot%/xml/schemas/%LCID%/Microsoft.Build.xsd"

   11           targetNamespace="http://schemas.microsoft.com/developer/msbuild/2003"/>

   12   <Schema href="%InstallRoot%/xml/schemas/%LCID%/vscontent.xsd"

   13           targetNamespace="http://schemas.microsoft.com/developer/vscontent/2005"/>

   14   <Schema href="%InstallRoot%/xml/schemas/%LCID%/customUI.xsd"

   15           targetNamespace="http://schemas.microsoft.com/office/2006/01/customui" />

   16   <Schema href="%InstallRoot%/common7/packages/SDM/Schema/SystemDefinitionModel.xsd"

   17           targetNamespace="http://schemas.microsoft.com/SystemDefinitionModel/2005/1" />

   18   <Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig20.xsd" condition="%TargetFrameworkVersion% = 2.0" />

   19   <Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig30.xsd" condition="%TargetFrameworkVersion% = 3.0" />

   20   <Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig.xsd" condition="%TargetFrameworkVersion% != 2.0 and %TargetFrameworkVersion% != 3.0" />

   21   <Association extension="message" schema="%InstallRoot%/xml/schemas/message.xsd"/>

   22 </SchemaCatalog>

 

위는 catalog.xml 파일입니다. 그중에서 21 Line 이 제가 추가한 부분입니다. message 라는 확장자의 XML Schema 를 지정하는 모습입니다. 이렇게 하시면, 이제 .message 확장자의 자동완성 기능은 catalog.xml 에 추가한 부분의 XML Schema 를 참조하게 됩니다. 하지만 이게 전부가 아닙니다. ( 단, catalog.xml 을 수정하시면 Visual Studio 를 재시작 해야 적용이 됩니다 )

 

 

텍스트 편집기에 Custom Extension 추가

위의 작업을 통해 .message 라는 확장자의 자동완성 XML Schema 를 지정해 주었지만, 이것이 전부가 아닙니다. 왜냐하면 Visual Studio 는 .message 확장자가 XML 인지 HTML 인지 TEXT 타입의 확장자인지 전혀 알 수 없기 때문입니다. 그렇기 때문에, Visual Studio 에게 .message 확장자는 XML 타입의 확장자임을 알려줄 필요가 있습니다.

이 부분도, 이미 지난 포스트에서 언급했던 부분입니다. 아래에 스샷을 첨부하지만, 궁금하신 분은 ASPX 확장명 변경과 Visual Studio 에 적용하기  을 참고하세요


[그림1] .message 를 XML 타입으로 설정하는 방법

위의 [그림1] 과 같이 .message 확장자를 Visual Studio 에게 XML 타입으로 설정해 줄 수 있습니다. 그럼 확장자를 .message 로 XML 파일을 만들어 보세요. 자동으로 <?xml> 선언문이 추가되는 것을 알 수 있습니다.


[그림2] .message 을 만든 화면

 

다국어 사이트를 위한 Message XML Schema 정의 ( 예제 )

여기에서 간단하게 다국어 사이트를 위한 Message XML 을 작성하기 위한 XML Schema 를 만들어 보았습니다. 여러개의 Culture Name 을 외우기도 쉽지 않기 때문에, 이러한 XML Schema 를 작성하게 되면 보다 효율적이고, 자동완성 기능으로 빠르게 XML 을 작성할 수 있습니다. 아래는 XML Schema 를 작성하는 간단한 예입니다.

    1 <?xml version="1.0" encoding="utf-16"?>

    2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vs="http://schemas.microsoft.com/Visual-Studio-Intellisense" elementFormDefault="qualified" attributeFormDefault="unqualified">

    3     <xs:element name="message">

    4         <xs:complexType>

    5             <xs:choice minOccurs="0" maxOccurs="unbounded">

    6                 <xs:element name="code">

    7                     <xs:complexType>

    8                         <xs:choice minOccurs="0" maxOccurs="unbounded">

    9                             <xs:element name="kr"></xs:element>

   10                             <xs:element name="jp"></xs:element>

   11                             <xs:element name="en"></xs:element>

   12                             <xs:element name="fr"></xs:element>

   13                         </xs:choice>

   14                         <xs:attribute name="controlID"></xs:attribute>

   15                     </xs:complexType>

   16                 </xs:element>

   17             </xs:choice>

   18         </xs:complexType>

   19     </xs:element>

   20 </xs:schema>

 

위와 같이 XML Schema 를 정의하게 되면, 아래와 같이 XML 을 빠르게 작성할 수 있습니다.

 



 

위의 [그림3], [그림4] 와 같이 Custom Extension 에 자동완성을 통해 XML 을 작성할 수 있다는 것을 알 수 있습니다.

 

 

역시 Visual Studio !!!

여러 가지 삽질을 통해서 Visual Studio 를 체험해 보면서, 역시 Visual Studio 라는 감탄밖에 나오지 않습니다. 그냥 코드를 만들고 디버깅하는 그러한 툴로만 생각했다면 크나큰 오산이었다는 것입니다. 강력한 툴이라고만 선전하는 Visual Studio 라고만 생각했었지만, 점점 알아갈 수록 강력한 툴이라는 것을 실감하게 됩니다. 미쳐 내가 알아차리지 못한 많은 세세한 부분까지 고려되어 설계되었다는 것을 알게 될 수록 역시 Visual Studio 라는 감탄만 나온답니다. 강력한 툴 만큼 개발자에게 강력한 생산성과 위력을 발휘하는 것 같다는 사담과 함께 이만 마칩니다.


Posted by 땡초 POWERUMC

댓글을 달아 주세요