Visual Studio는 NuGet Package Manager를 사용해서 의존성을 관리합니다.
이때, 프로젝트에 packages.config 파일이 만들어지고, 이 파일에 정의된 패키지를 빌드할 때, 내려받아서 빌드가 진행됩니다.
그런데, packages.config 파일을 열어보면 Xml Schema 를 찾을 수 없어서 packages 엘리먼트에 정의를 찾을 수 없다는 메세지가 표시됩니다.
사용에는 문제없지만, 보기가 좋지 않다면, 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>
파일의 위치는
- packages.config 파일이 있는 디렉터리
- 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.