VSIX 확장 스키마 2.0 참조
VSIX 배포 매니페스트 파일은 VSIX 패키지의 내용을 설명합니다. 파일 형식은 스키마에 의해 제어됩니다. 이 스키마의 버전 2.0은 사용자 지정 형식 및 특성의 추가를 지원합니다. 매니페스트의 스키마는 확장할 수 있습니다. 매니페스트 로더는 해석하지 못하는 XML 요소 및 특성을 무시합니다.
패키지 매니페스트 스키마
매니페스트 XML 파일의 루트 요소는 <PackageManifest>
입니다. 매니페스트 형식의 버전인 단일 특성 Version
이 있습니다. 형식이 크게 달라지면 버전 형식이 변경됩니다. 이 문서에서는 Version
특성을 Version="2.0" 값으로 설정하여 매니페스트에 지정된 매니페스트 형식 버전 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과 같이 정규화되어야 합니다.Id
특성은 100자로 제한됩니다.Version
- 이 패키지의 버전과 해당 콘텐츠를 정의합니다. 이 특성은 CLR 어셈블리 버전 관리 형식인 Major.Minor.Build.Revision(1.2.40308.00)을 따릅니다. 버전 번호가 더 높은 패키지는 패키지에 대한 업데이트로 간주되며 설치된 기존 버전에 설치할 수 있습니다.Language
- 이 특성은 패키지의 기본 언어이며 이 매니페스트의 텍스트 데이터에 해당합니다. 이 특성은 리소스 어셈블리에 대한 공용 언어 런타임 로캘 코드 규칙(예: en-us, en, fr-fr)을 따릅니다. Visual Studio의 모든 버전에서 실행되는 언어 중립적 확장을 선언하도록 지정할neutral
수 있습니다. 기본값은neutral
입니다.Publisher
- 이 특성은 이 패키지의 게시자(회사 또는 개별 이름)를 식별합니다.Publisher
특성은 100자로 제한됩니다.
<DisplayName>
- 이 요소는 확장 관리자 UI에 표시되는 사용자에게 친숙한 패키지 이름을 지정합니다.DisplayName
콘텐츠는 50자로 제한됩니다.<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>
- 이 선택적 요소는 검색 힌트에 사용되는 세미콜론으로 구분된 추가 텍스트 태그를 나열합니다.Tags
요소는 100자로 제한됩니다.<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를 대상으로 해야 합니다.Scope
특성에 명시적 또는 기본값 "ProductExtension"이 있는 경우<InstallationTarget>
요소에는 다음과 같은 특성이 있습니다.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]이며 자세한 방식은 다음과 같습니다.[ - 최소 버전(포함)
] - 최대 버전(포함)
( - 최소 버전(제외)
) - 최대 버전(제외)
단일 버전 # - 지정된 버전만
Important
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>
요소는 런타임에 이름 값 쌍 사전으로 노출되는 개방형 특성 집합을 허용합니다.
종속성 요소
이 요소에는 이 패키지에서 선언하는 종속성 목록이 포함되어 있습니다. 종속성이 지정된 경우 해당 패키지(각자의 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
요소는 런타임에 이름 값 쌍 사전으로 노출되는 개방형 특성 집합을 허용합니다.
자산 요소
이 요소에는 이 패키지에 의해 노출되는 각 확장 또는 콘텐츠 요소에 대한 <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 내의 런타임에서는 코드가 확장 관리자 API를 통해 이러한 사용자 지정 형식을 열거하고 액세스할 수 있습니다.
Path
- 자산을 포함하는 패키지 내의 파일 또는 폴더에 대한 상대 경로입니다.TargetVersion
- 지정된 자산이 적용되는 버전 범위입니다. 자산의 여러 버전을 다른 버전의 Visual Studio로 보내는 데 사용됩니다. 이를 위해서는 Visual Studio 2017.3 이상이 필요합니다.AnyAttribute*
- 런타임에 이름 값 쌍 사전으로 노출되는 개방형 특성 집합입니다.<AnyElement>*
-<Asset>
시작 태그와 끝 태그 사이에 구조화된 모든 콘텐츠가 허용됩니다. 모든 요소는 XmlElement 개체 목록으로 노출됩니다. VSIX 확장은 매니페스트 파일에서 구조화된 형식별 메타데이터를 정의하고 런타임에 열거할 수 있습니다.
확장 매니페스트에 대한 자리 표시자 구문
이 파일은 .vsixmanifest
VSIX 패키지에 대한 빌드를 정의합니다. 빌드가 요청되면 Visual Studio는 매니페스트를 구문 분석하여 MSBuild를 사용하여 빌드된 빌드 스크립트를 생성합니다. VSIX 패키지를 빌드하기 전에 평가되는 자리 표시자를 사용하여 빌드 시 특정 값을 설정할 수 있습니다. 자리 표시자는 VSIX 프로젝트, MSBuild 속성 및 MSBuild 대상에서 참조되는 프로젝트를 참조하는 데 사용되며, 가장 일반적으로 프로젝트 출력 그룹을 나타내는 대상입니다. 프로젝트 출력 그룹은 프로젝트와 연결된 파일의 컬렉션을 나타내며, 이들 중 일부는 VSIX 패키지에 포함될 수 있습니다. 예를 들어 PkgDefProjectOutputGroup
, BuiltProjectOutputGroup
또는 SatelliteDllsProjectOutputGroup
입니다.
VSIX 프로젝트에 정의된 속성을 참조하려면 프로젝트 파일 자체 $(PropertyName)
에서와 동일한 구문을 사용합니다.
특수 토큰 %CurrentProject%
은 VSIX 프로젝트를 참조합니다. 파이프 기호(|
)로 둘러싸인 VSIX 프로젝트 파일의 ProjectReference
요소를 사용하여 Name
VSIX 프로젝트에서 참조되는 다른 프로젝트를 참조할 수 있습니다. 예: |ProjectTemplate1|
.
프로젝트 이름( Name
VSIX 프로젝트의 프로젝트 참조 속성) 및 대상 이름으로 MSBuild 대상을 참조할 수 있습니다. 예를 들어 VSIX 패키지에서 참조되는 프로젝트 중 하나에서 대상을 참조하려면 Version
구문을 |ProjectName;Version|
사용합니다. 대상에는 사용되는 컨텍스트와 일치하는 값이 있어야 합니다 Outputs
. VSIX 매니페스트에는 문자열 값과 항목 컬렉션의 대체가 적절한 위치가 포함됩니다. 예를 들어 매니페스트의 버전 문자열은 다음과 같이 바뀝니다.
<Identity Id="0000000-0000-0000-0000-000000000000" Version="|%CurrentProject%;GetVsixVersion|" Language="en-US" Publisher="Company" />
이 경우 VSIX 프로젝트에는 간단한 문자열을 GetVsixVersion
반환해야 하는 대상이 있어야 합니다. 예를 들면 다음과 같습니다.
<Target Name="GetVsixVersion" Outputs="$(_VsixVersion)">
<PropertyGroup>
<_VsixVersion>1.2.3.4</_VsixVersion>
</PropertyGroup>
</Target>
자리 표시자는 SDK 스타일 VSIX 프로젝트를 사용하여 올바른 VSIX 매니페스트 파일을 만드는 데 사용됩니다. 'TargetFramework' 속성을 사용하여 Visual Studio의 대상 버전을 지정한다고 가정합니다.
<TargetFramework>vs17.0</TargetFramework> // Target Visual Studio 2022 version 17.0
<TargetFramework>vs16.10</TargetFramework> // Target Visual Studio 2019 version 16.10
대상 프레임워크에 따라 VSIX 빌드는 다음과 같이 확장 매니페스트 파일에 정의된 값을 변환합니다. 매니페스트 파일에서 다음 구문의 경우:
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="|%CurrentProject%;GetInstallationTargetVersion|" />
VSIX 프로젝트 MSBuild 코드에 사용되는 출력은 다음과 같습니다.
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0, 18.0)">
<ProductArchitecture>amd64</ProductArchitecture>
</InstallationTarget>
확장 매니페스트의 다음 코드는 다음과 같습니다.
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="|%CurrentProject%;GetPrerequisiteTargetVersion|" DisplayName="Visual Studio core editor" />
프로젝트 빌드 코드는 다음과 같습니다.
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[17.0, 18.0)" DisplayName="Visual Studio core editor" />
이 기능은 Visual Studio에서 프로젝트 참조의 이름으로 프로젝트 출력 그룹을 참조하기 위해 생성한 다음 MSBuild 대상의 이름을 세미콜론으로 구분하여 생성하는 VSIX 매니페스트 파일에서도 사용됩니다. 예를 들어 문자열 |%CurrentProject%;PkgDefProjectOutputGroup|
은 현재 VSIX 프로젝트와 연결된 파일을 참조하는 PkgDef 출력 그룹을 의미합니다 .pkgdef
. ProjectOutputGroup
시스템 빌드 파일 Microsoft.Common.CurrentVersion.targets에 정의된 일부 대상은 Visual Studio에서 생성된 VSIX 매니페스트에 사용됩니다. VSIX 프로젝트에서 사용할 수 있는 추가 프로젝트 출력 그룹 대상은 Microsoft.VsSDK.targets에 정의되어 있습니다. 다음 표에서는 정의된 프로젝트 출력 그룹을 보여줍니다.
ProjectOutputGroup | 설명 |
---|---|
BuiltProjectOutputGroup | 빌드 출력을 나타내는 파일입니다. |
ContentFilesProjectOutputGroup | HTML 및 CSS 파일과 같이 프로젝트와 연결된 이진 파일이 아닌 파일입니다. |
DebugSymbolsProjectOutputGroup | Visual Studio의 실험적 인스턴스에서 확장을 디버깅하기 위한 기호 파일(.pdb )입니다. |
DocumentationFilesProjectOutputGroup | XML 설명서 파일. |
PkgDefProjectOutputGroup | 패키지 정의(.pkgdef ) 파일 |
PriFilesOutputGroup | .pri UWP 프로젝트와 연결된 리소스 파일입니다. |
SatelliteDllsProjectOutputGroup | 지역화된 리소스에 대한 위성 어셈블리입니다. |
SDKRedistOutputGroup | 프로젝트에서 참조하는 SDK의 재배포 가능 폴더입니다. |
SGenFilesOutputGroup | GenerateSerializationAssemblies 파일은 GenerateSerializationAssemblies 대상 및 태스크에서 생성한 파일입니다. |
SourceFilesProjectOutputGroup | 소스 코드 파일. |
TemplateProjectOutputGroup | 프로젝트 템플릿. |
빌드 시스템은 기본 빌드 논리에 따라 이러한 출력 그룹을 적절한 파일로 채웁니다. 사용자 지정 빌드에서 대상의 특성을 위의 대상 중 하나로 설정 BeforeTargets
하여 프로젝트 출력 그룹에 항목을 추가할 수 있으며, 대상에서 위에 나열된 대상에 대한 코드를 따라 작업을 사용하여 BuiltProjectOutputGroupKeyOutput
출력을 설정하는 방법에 대한 예제로 사용할 수 있습니다.
고급 시나리오에서는 빌드 대상을 참조하거나 호출하려는 사용자 지정 대상을 정의하고 여기에 설명된 구문을 사용하여 VSIX 매니페스트의 모든 요소에 대한 값을 삽입할 수 있습니다. 대상에는 사용되는 컨텍스트의 예상과 일치하는 적절한 출력 매개 변수가 있어야 합니다. 프로젝트의 기본 출력과 같은 파일 컬렉션이 필요한 경우 필요한 MSBuild 항목을 출력하는 대상이 필요합니다. 이전에 멘션 프로젝트 출력 그룹 빌드 대상은 사용자 고유의 대상을 빌드할 때 예제로 사용할 수 있습니다.
샘플 매니페스트
<?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>