VSIX 확장 스키마 2.0 참조
적용 대상:![]()
Mac
용 Visual Studio Visual Studio Visual Studio Code
VSIX 배포 매니페스트 파일은 VSIX 패키지의 내용을 설명합니다. 파일 형식은 스키마에 의해 제어됩니다. 이 스키마 버전 2.0은 사용자 지정 형식 및 특성의 추가를 지원합니다. 매니페스트의 스키마는 확장할 수 있습니다. 매니페스트 로더는 이해하지 못하는 XML 요소 및 특성을 무시합니다.
중요
Visual Studio 2015는 Visual Studio 2010, Visual Studio 2012 또는 Visual Studio 2013 형식으로 VSIX 파일을 로드할 수 있습니다.
패키지 매니페스트 스키마
매니페스트 XML 파일의 루트 요소는 .입니다 <PackageManifest>. 매니페스트 형식의 버전인 단일 특성 Version이 있습니다. 형식이 크게 변경되면 버전 형식이 변경됩니다. 이 문서에서는 특성을 Version="2.0" 값으로 설정 Version 하여 매니페스트에 지정된 매니페스트 형식 버전 2.0에 대해 설명합니다.
PackageManifest 요소
<PackageManifest> 루트 요소 내에서 다음 요소를 사용할 수 있습니다.
<Metadata>- 패키지 자체에 대한 메타데이터 및 광고 정보입니다. 매니페스트에는 하나의Metadata요소만 허용됩니다.<Installation>- 이 섹션에서는 설치할 수 있는 애플리케이션 SKU를 포함하여 이 확장 패키지를 설치할 수 있는 방법을 정의합니다. 매니페스트에는 단일Installation요소만 허용됩니다. 매니페스트에는Installation요소가 있어야 합니다. 그렇지 않으면 이 패키지가 SKU에 설치되지 않습니다.<Dependencies>- 이 패키지에 대한 선택적 종속성 목록이 여기에 정의되어 있습니다.<Assets>- 이 섹션에는 이 패키지에 포함된 모든 자산이 포함되어 있습니다. 이 섹션이 없으면 이 패키지는 콘텐츠를 표시하지 않습니다.<AnyElement>*- 매니페스트 스키마는 다른 요소를 허용하기에 충분히 유연합니다. 매니페스트 로더에서 인식되지 않는 모든 자식 요소는 확장 관리자 API에서 추가 XmlElement 개체로 노출됩니다. VSIX 확장은 이러한 자식 요소를 사용하여 Visual Studio에서 실행되는 코드가 런타임에 액세스할 수 있는 추가 데이터를 매니페스트 파일에 정의할 수 있습니다. Microsoft.VisualStudio.ExtensionManager.IExtension.AdditionalElements를 참조하세요.
메타데이터 요소
이 섹션은 패키지, 해당 ID 및 광고 정보에 대한 메타데이터입니다. <Metadata> 에는 다음 요소가 포함됩니다.
<Identity>- 이 패키지에 대한 식별 정보를 정의하고 다음 특성을 포함합니다.Id- 이 특성은 작성자가 선택한 패키지의 고유 ID여야 합니다. 이름은 CLR 형식의 이름을 지정하는 것과 동일한 방식으로 정규화되어야 합니다( Company.Product.Feature.Name. 특성은Id100자로 제한됩니다.Version- 이 패키지의 버전과 해당 콘텐츠를 정의합니다. 이 특성은 CLR 어셈블리 버전 관리 형식인 Major.Minor.Build.Revision(1.2.40308.00)을 따릅니다. 버전 번호가 더 높은 패키지는 패키지에 대한 업데이트로 간주되며 기존 설치된 버전을 통해 설치할 수 있습니다.Language- 이 특성은 패키지의 기본 언어이며 이 매니페스트의 텍스트 데이터에 해당합니다. 이 특성은 리소스 어셈블리에 대한 CLR 로캘 코드 규칙(예: en-us, en, fr-fr)을 따릅니다. Visual Studio의 모든 버전에서 실행되는 언어 중립적 확장을 선언하도록 지정할neutral수 있습니다. 기본값은neutral입니다.Publisher- 이 특성은 이 패키지의 게시자(회사 또는 개별 이름)를 식별합니다. 특성은Publisher100자로 제한됩니다.
<DisplayName>- 이 요소는 확장 관리자 UI에 표시되는 사용자에게 친숙한 패키지 이름을 지정합니다. 콘텐츠는DisplayName50자로 제한됩니다.<Description>- 이 선택적 요소는 확장 관리자 UI에 표시되는 패키지 및 해당 내용에 대한 간단한 설명입니다. 콘텐츠에는Description원하는 텍스트가 포함될 수 있지만 1,000자로 제한됩니다.<MoreInfo>- 이 선택적 요소는 이 패키지에 대한 전체 설명이 포함된 온라인 페이지의 URL입니다. 프로토콜을 http로 지정해야 합니다.<License>- 이 선택적 요소는 패키지에 포함된 라이선스 파일(.txt, .rtf)에 대한 상대 경로입니다.<ReleaseNotes>- 이 선택적 요소는 패키지(.txt, .rtf)에 포함된 릴리스 정보 파일의 상대 경로이거나 릴리스 정보를 표시하는 웹 사이트의 URL입니다.<Icon>- 이 선택적 요소는 패키지에 포함된 이미지 파일(png, bmp, jpeg, ico)에 대한 상대 경로입니다. 아이콘 이미지는 32x32픽셀(또는 해당 크기로 축소됨)이어야 하며 listview UI에 표시됩니다. 지정된 요소가 없Icon으면 UI에서 기본값을 사용합니다.<PreviewImage>- 이 선택적 요소는 패키지에 포함된 이미지 파일(png, bmp, jpeg)에 대한 상대 경로입니다. 미리 보기 이미지는 200x200픽셀이어야 하며 세부 정보 UI에 표시됩니다. 지정된 요소가 없PreviewImage으면 UI에서 기본값을 사용합니다.<Tags>- 이 선택적 요소는 검색 힌트에 사용되는 세미콜론으로 구분된 추가 텍스트 태그를 나열합니다. 요소는Tags100자로 제한됩니다.<GettingStartedGuide>- 이 선택적 요소는 HTML 파일의 상대 경로이거나 이 패키지 내의 확장 또는 콘텐츠를 사용하는 방법에 대한 정보가 포함된 웹 사이트의 URL입니다. 이 가이드는 설치의 일부로 시작됩니다.<AnyElement>*- 매니페스트 스키마는 다른 요소를 허용하기에 충분히 유연합니다. 매니페스트 로더에서 인식되지 않는 모든 자식 요소는 XmlElement 개체 목록으로 노출됩니다. VSIX 확장은 이러한 자식 요소를 사용하여 매니페스트 파일에서 추가 데이터를 정의하고 런타임에 열거할 수 있습니다.
설치 요소
이 섹션에서는 이 패키지를 설치할 수 있는 방법과 설치할 수 있는 애플리케이션 SKU를 정의합니다. 이 섹션에는 다음 특성이 포함되어 있습니다.
Experimental- 현재 모든 사용자에 대해 설치된 확장이 있지만 동일한 컴퓨터에서 업데이트된 버전을 개발하는 경우 이 특성을 true로 설정합니다. 예를 들어 모든 사용자에 대해 MyExtension 1.0을 설치했지만 동일한 컴퓨터에서 MyExtension 2.0을 디버그하려면 Experimental="true"를 설정합니다. 이 특성은 Visual Studio 2015 업데이트 1 이상에서 사용할 수 있습니다.Scope- 이 특성은 "Global" 또는 "ProductExtension" 값을 사용할 수 있습니다."Global"은 설치 범위가 특정 SKU로 지정되지 않도록 지정합니다. 예를 들어 이 값은 확장 SDK가 설치될 때 사용됩니다.
"ProductExtension"은 개별 Visual Studio SKU로 범위가 지정된 기존 VSIX 확장(버전 1.0)이 설치되도록 지정합니다. 이것은 기본값입니다.
AllUsers- 이 선택적 특성은 이 패키지를 모든 사용자에 대해 설치할지 여부를 지정합니다. 기본적으로 이 특성은 false이며 패키지가 사용자 단위임을 지정합니다. (이 값을 true로 설정하면 설치 사용자는 관리자 권한 수준으로 상승하여 결과 VSIX를 설치해야 합니다.InstalledByMsi- 이 선택적 특성은 이 패키지가 MSI에 의해 설치되는지 여부를 지정합니다. MSI에서 설치한 패키지는 Visual Studio 확장 관리자가 아닌 MSI(프로그램 및 기능)에 의해 설치 및 관리됩니다. 기본적으로 이 특성은 FALSE이며, MSI에서 패키지를 설치하지 않도록 지정합니다.SystemComponent- 이 선택적 특성은 이 패키지를 시스템 구성 요소로 간주할지 여부를 지정합니다. 시스템 구성 요소는 확장 관리자 UI에 표시되지 않으며 업데이트할 수 없습니다. 기본적으로 이 특성은 false이며 패키지가 시스템 구성 요소가 아님을 지정합니다.AnyAttribute*- 요소는Installation런타임에 이름-값 쌍 사전으로 노출되는 개방형 특성 집합을 허용합니다.<InstallationTarget>-이 요소는 VSIX 설치 관리자가 패키지를 설치하는 위치를 제어합니다. 특성 값Scope이 "ProductExtension"인 경우 패키지는 확장에 가용성을 알리기 위해 매니페스트 파일을 콘텐츠의 일부로 설치한 SKU를 대상으로 해야 합니다.<InstallationTarget>특성에 명시적 또는 기본값 "ProductExtension"이 있는 경우Scope요소에는 다음과 같은 특성이 있습니다.Id- 이 특성은 패키지를 식별합니다. 특성은 네임스페이스 규칙인 Company.Product.Feature.Name 따릅니다. 이 특성은Id영숫자 문자만 포함할 수 있으며 100자로 제한됩니다. 예상 값:Microsoft.VisualStudio.IntegratedShell
Microsoft.VisualStudio.Pro
Microsoft.VisualStudio.Premium
Microsoft.VisualStudio.Ultimate
Microsoft.VisualStudio.VWDExpress
Microsoft.VisualStudio.VPDExpress
Microsoft.VisualStudio.VSWinExpress
Microsoft.VisualStudio.VSLS
My.Shell.App
Version- 이 특성은 이 SKU의 지원되는 최소 및 최대 버전을 사용하여 버전 범위를 지정합니다. 패키지는 지원하는 SKU 버전을 자세히 설명할 수 있습니다. 버전 범위 표기법은 [10.0 - 11.0]입니다.[ - 최소 버전 포함
] - 최대 버전 포함
( - 최소 버전 배타적.
) - 최대 버전 전용입니다.
단일 버전 # - 지정된 버전만
중요
VSIX 스키마 버전 2.0은 Visual Studio 2012에서 도입되었습니다. 이 스키마를 사용하려면 컴퓨터에 Visual Studio 2012 이상이 설치되어 있어야 하며 해당 제품의 일부인 VSIXInstaller.exe 사용해야 합니다. Visual Studio 2012 이상 VSIXInstaller를 사용하여 이전 버전의 Visual Studio를 대상으로 지정할 수 있지만 이후 버전의 설치 관리자만 사용할 수 있습니다.
Visual Studio 2017 버전 번호는 Visual Studio 빌드 번호 및 릴리스 날짜에서 찾을 수 있습니다.
Visual Studio 2017 릴리스의 버전을 표현할 때 부 버전은 항상 0이어야 합니다. 예를 들어 Visual Studio 2017 버전 15.3.26730.0은 [15.0.26730.0,16.0)으로 표현되어야 합니다. Visual Studio 2017 이상 버전 번호에만 필요합니다.
AnyAttribute*- 이<InstallationTarget>요소는 런타임에 이름-값 쌍 사전으로 노출되는 개방형 특성 집합을 허용합니다.
Dependencies 요소
이 요소에는 이 패키지에서 선언하는 종속성 목록이 포함되어 있습니다. 종속성이 지정된 경우 해당 패키지(해당 패키지로 Id식별됨)가 이전에 설치되어 있어야 합니다.
<Dependency>요소 - 이 자식 요소에는 다음과 같은 특성이 있습니다.Id- 이 특성은 종속 패키지에 대한 고유 ID여야 합니다. 이 ID 값은 이 패키지가<Metadata><Identity>Id종속된 패키지의 특성과 일치해야 합니다. 특성은Id네임스페이스 규칙인 Company.Product.Feature.Name 따릅니다. 이 특성은 영숫자 문자만 포함할 수 있으며 100자로 제한됩니다.Version- 이 특성은 이 SKU의 지원되는 최소 및 최대 버전을 사용하여 버전 범위를 지정합니다. 패키지는 지원하는 SKU 버전을 자세히 설명할 수 있습니다. 버전 범위 표기법은 다음과 같은 [12.0, 13.0]입니다.[ - 최소 버전 포함
] - 최대 버전 포함
( - 최소 버전 배타적.
) - 최대 버전 전용입니다.
단일 버전 # - 지정된 버전만
DisplayName- 이 특성은 대화 상자 및 오류 메시지와 같은 UI 요소에 사용되는 종속 패키지의 표시 이름입니다. MSI에서 종속 패키지를 설치하지 않는 한 이 특성은 선택 사항입니다.Location- 이 선택적 특성은 중첩된 VSIX 패키지에 대한 이 VSIX 내의 상대 경로 또는 종속성에 대한 다운로드 위치에 대한 URL을 지정합니다. 이 특성은 사용자가 필수 구성 요소 패키지를 찾는 데 사용됩니다.AnyAttribute*- 요소는Dependency런타임에 이름-값 쌍 사전으로 노출되는 개방형 특성 집합을 허용합니다.
Assets 요소
이 요소에는 이 패키지에 의해 노출되는 각 확장 또는 콘텐츠 요소에 대한 태그 목록이 <Asset> 포함되어 있습니다.
<Asset>- 이 요소에는 다음과 같은 특성과 요소가 포함됩니다.Type- 이 요소가 나타내는 확장 또는 콘텐츠의 형식입니다. 각<Asset>요소에는 단일Type요소가 있어야 하지만 여러<Asset>요소가 같Type을 수 있습니다. 이 특성은 네임스페이스 규칙에 따라 정규화된 이름으로 표현되어야 합니다. 알려진 형식은 다음과 같습니다.Microsoft.VisualStudio.VsPackage
Microsoft.VisualStudio.MefComponent
Microsoft.VisualStudio.ToolboxControl
Microsoft.VisualStudio.Samples
Microsoft.VisualStudio.ProjectTemplate
Microsoft.VisualStudio.ItemTemplate
Microsoft.VisualStudio.Assembly
고유한 형식을 만들고 고유한 이름을 지정할 수 있습니다. Visual Studio 내에서 런타임에 코드는 Extension Manager API를 통해 이러한 사용자 지정 형식을 열거하고 액세스할 수 있습니다.
Path- 자산이 포함된 패키지 내의 파일 또는 폴더에 대한 상대 경로입니다.TargetVersion- 지정된 자산이 적용되는 버전 범위입니다. 여러 버전의 자산을 다른 버전의 Visual Studio로 배송하는 데 사용됩니다. Visual Studio 2017.3 이상이 적용되어야 합니다.AnyAttribute*- 런타임에 이름-값 쌍 사전으로 노출되는 개방형 특성 집합입니다.<AnyElement>*- 시작 태그와 끝 태그 사이에 구조화된 모든 콘텐츠가<Asset>허용됩니다. 모든 요소는 XmlElement 개체 목록으로 노출됩니다. VSIX 확장은 매니페스트 파일에서 구조화된 형식별 메타데이터를 정의하고 런타임에 열거할 수 있습니다.
샘플 매니페스트
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Id="0000000-0000-0000-0000-000000000000" Version="1.0" Language="en-US" Publisher="Company" />
<DisplayName>Test Package</DisplayName>
<Description>Information about my package</Description>
<MoreInfo>http://www.fabrikam.com/Extension1/</MoreInfo>
<License>eula.rtf</License>
<ReleaseNotes>notes.txt</ReleaseNotes>
<Icon>Images\icon.png</Icon>
<PreviewImage>Images\preview.png</PreviewImage>
</Metadata>
<Installation InstalledByMsi="false" AllUsers="false" SystemComponent="false" Scope="ProductExtension">
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[11.0, 12.0]" />
</Installation>
<Dependencies>
<Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="[4.5,)" />
<Dependency Id="Microsoft.VisualStudio.MPF.12.0" DisplayName="Visual Studio MPF 12.0" d:Source="Installed" Version="[12.0]" />
</Dependencies>
<Assets>
<Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%;PkgdefProjectOutputGroup|" />
</Assets>
</PackageManifest>