NuGet Packages XSD

Visual Studio는 NuGet Package Manager를 사용해서 의존성을 관리합니다.

이때, 프로젝트에 packages.config 파일이 만들어지고, 이 파일에 정의된 패키지를 빌드할 때, 내려받아서 빌드가 진행됩니다.

그런데, packages.config 파일을 열어보면 Xml Schema 를 찾을 수 없어서 packages 엘리먼트에 정의를 찾을 수 없다는 메세지가 표시됩니다.

nuget packages.config
nuget packages.config
View on Flickr

사용에는 문제없지만, 보기가 좋지 않다면, Xml 스키마 정의 Xml Schema Definition 파일을 추가해서 packages.config 파일의 정의를 IDE에 알려주고 사용되도록 할 수 있습니다.

XSD 추가

먼저 아래 내용으로 xsd 파일을 만듭니다.

파일이름은 namespace 이름과 동일하게 nuget.packages.xsd 라고 만들어서 사용합니다. 원하는 파일이름을 사용하시면 됩니다.

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
      targetNamespace="urn:nuget.packages" xmlns="urn:nuget.packages">
  <xs:element name="packages">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="package" maxOccurs="unbounded">
          <xs:complexType>
            <xs:attribute name="id" type="xs:string" use="required" />
            <xs:attribute name="version" type="xs:string" use="required" />
            <xs:attribute name="targetFramework" type="xs:string" use="optional" />
            <xs:attribute name="allowedVersions" type="xs:string" use="optional" />
            <xs:attribute name="developmentDependency" type="xs:string" use="optional" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

파일의 위치는

  1. packages.config 파일이 있는 디렉터리
  2. Visual Studio 에서 Xml Schema 를 관리하는 디렉터리

2번을 추천합니다.

1번처럼 관리하면 프로젝트 디렉터리마다 xsd 파일을 추가해야 합니다.

Visual Studio 에서 xml Schema를 관리하는 디렉터리는 아래와 같습니다.

<Visual Studio 설치 디렉터리>\Xml\Schemas

e.g. Visual Studio 2015 를 기본 위치에 설치한 경우 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Xml\Schemas

xsd 파일을 Visual Studio 에서 Xml Schema를 관리하는 디렉터리에 추가한 후 Visual Studio 를 재시작합니다.

그 후 packages.config 파일을 열고, 아래와 같이 packages 엘리먼트에 네임스페이스를 추가합니다.

<?xml version="1.0" encoding="utf-8"?>
<packages xmlns="urn:packages">
    <package id="jQuery" version="1.10.2" targetFramework="net452" />
</packages>

이제 package 엘리먼트의 속성을 추가할 때, xsd에 정의된 속성은 자동완성 기능으로 사용할 수 있는 속성을 알려줍니다.

이렇게 해서 신경쓰이던 packages 엘리먼트의 파란색 밑줄을 제거할 수 있습니다.

이 사이트는 광고를 포함하고 있습니다.
광고로 발생한 수익금은 서버 유지 관리에 사용되고 있습니다.

This site contains advertisements.
Revenue generated by the ad servers are being used for maintenance.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다