VSIX-Erweiterungsschema 2.0-Referenz
Eine VSIX-Bereitstellungsmanifestdatei beschreibt den Inhalt eines VSIX-Pakets. Das Dateiformat wird durch ein Schema gesteuert. Version 2.0 dieses Schemas unterstützt das Hinzufügen von benutzerdefinierten Typen und Attributen. Das Schema des Manifests ist erweiterbar. Das Manifestladeprogramm ignoriert XML-Elemente und Attribute, die nicht verstanden werden.
Paketmanifestschema
Das Stammelement der XML-Manifestdatei ist <PackageManifest>
. Es verfügt über ein einzelnes Attribut Version
, bei dem es sich um die Version des Manifestformats handelt. Wenn wichtige Änderungen am Format vorgenommen werden, wird das Versionsformat geändert. In diesem Artikel wird das Manifestformat Version 2.0 beschrieben, das im Manifest angegeben wird, indem das Version
Attribut auf den Wert "Version="2.0" festgelegt wird.
PackageManifest-Element
Innerhalb des <PackageManifest>
Stammelements können Sie die folgenden Elemente verwenden:
<Metadata>
- Metadaten und Werbeinformationen über das Paket selbst. Im Manifest ist nur einMetadata
Element zulässig.<Installation>
– In diesem Abschnitt wird definiert, wie dieses Erweiterungspaket installiert werden kann, einschließlich der Anwendungs-SKUs, in denen es installiert werden kann. Im Manifest ist nur ein einzelnesInstallation
Element zulässig. Ein Manifest muss über einInstallation
Element verfügen, oder dieses Paket wird nicht in einer SKU installiert.<Dependencies>
– Hier wird eine optionale Liste der Abhängigkeiten für dieses Paket definiert.<Assets>
– Dieser Abschnitt enthält alle Ressourcen, die in diesem Paket enthalten sind. Ohne diesen Abschnitt wird in diesem Paket kein Inhalt angezeigt.<AnyElement>*
- Das Manifestschema ist flexibel genug, um alle anderen Elemente zuzulassen. Alle untergeordneten Elemente, die vom Manifestladeprogramm nicht erkannt werden, werden in der Erweiterungs-Manager-API als zusätzliche XmlElement-Objekte verfügbar gemacht. Mithilfe dieser untergeordneten Elemente können VSIX-Erweiterungen zusätzliche Daten in der Manifestdatei definieren, auf die Code in Visual Studio zur Laufzeit zugreifen kann. Siehe "Microsoft.VisualStudio.ExtensionManager.IExtension.AdditionalElements".
Metadata-Element
Dieser Abschnitt enthält die Metadaten für das Paket, seine Identität und Werbeinformationen. <Metadata>
enthält die folgenden Elemente:
<Identity>
– Definiert Identifikationsinformationen für dieses Paket und enthält die folgenden Attribute:Id
- Dieses Attribut muss eine eindeutige ID für das vom Autor ausgewählte Paket sein. Der Name sollte auf die gleiche Weise qualifiziert werden, wie CLR-Typen namespaces sind: Company.Product.Feature.Name. DasId
Attribut ist auf 100 Zeichen beschränkt.Version
– Definiert die Version dieses Pakets und dessen Inhalt. Dieses Attribut folgt dem CLR-Assemblyversionsverwaltungsformat: Major.Minor.Build.Revision (1.2.40308.00). Ein Paket mit einer höheren Versionsnummer gilt als Updates für das Paket und kann über die vorhandene installierte Version installiert werden.Language
- Dieses Attribut ist die Standardsprache für das Paket und entspricht den Textdaten in diesem Manifest. Dieses Attribut folgt der CLR-Gebietsschemacodekonvention für Ressourcenassemblys, z. B. "en-us", "fr-fr". Sie können angebenneutral
, dass eine sprachneutrale Erweiterung deklariert wird, die in jeder Version von Visual Studio ausgeführt wird. Der Standardwert istneutral
.Publisher
- Dieses Attribut identifiziert den Herausgeber dieses Pakets, entweder ein Unternehmen oder einen einzelnen Namen. DasPublisher
Attribut ist auf 100 Zeichen beschränkt.
<DisplayName>
- Dieses Element gibt den benutzerfreundlichen Paketnamen an, der in der Erweiterungs-Manager-Benutzeroberfläche angezeigt wird. DerDisplayName
Inhalt ist auf 50 Zeichen beschränkt.<Description>
– Dieses optionale Element ist eine kurze Beschreibung des Pakets und dessen Inhalte, die in der Erweiterungs-Manager-Benutzeroberfläche angezeigt werden. DerDescription
Inhalt kann beliebigen Text enthalten, aber er ist auf 1000 Zeichen beschränkt.<MoreInfo>
– Dieses optionale Element ist eine URL zu einer Onlineseite, die eine vollständige Beschreibung dieses Pakets enthält. Das Protokoll muss als HTTP angegeben werden.<License>
- Dieses optionale Element ist ein relativer Pfad zu einer Lizenzdatei (TXT, RTF), die im Paket enthalten ist.<ReleaseNotes>
- Dieses optionale Element ist entweder ein relativer Pfad zu einer Versionshinweisedatei, die im Paket (TXT, RTF) enthalten ist, oder eine URL zu einer Website, auf der die Versionshinweise angezeigt werden.<Icon>
- Dieses optionale Element ist ein relativer Pfad zu einer Bilddatei (png, bmp, jpeg, ico), die im Paket enthalten ist. Das Symbolbild sollte 32 x 32 Pixel (oder wird auf diese Größe verkleinert) und in der Listenansicht-BEnutzeroberfläche angezeigt. Wenn keinIcon
Element angegeben ist, verwendet die Benutzeroberfläche einen Standardwert.<PreviewImage>
- Dieses optionale Element ist ein relativer Pfad zu einer Bilddatei (png, bmp, jpeg), die im Paket enthalten ist. Das Vorschaubild sollte 200 x 200 Pixel betragen und in der Detail-UI angezeigt werden. Wenn keinPreviewImage
Element angegeben ist, verwendet die Benutzeroberfläche einen Standardwert.<Tags>
– Dieses optionale Element listet zusätzliche durch Semikolons getrennte Texttags auf, die für Suchhinweise verwendet werden. DasTags
Element ist auf 100 Zeichen beschränkt.<GettingStartedGuide>
- Dieses optionale Element ist entweder ein relativer Pfad zu einer HTML-Datei oder eine URL zu einer Website, die Informationen zur Verwendung der Erweiterung oder des Inhalts innerhalb dieses Pakets enthält. Dieses Handbuch wird als Teil einer Installation gestartet.<AnyElement>*
- Das Manifestschema ist flexibel genug, um alle anderen Elemente zuzulassen. Alle untergeordneten Elemente, die vom Manifestladeprogramm nicht erkannt werden, werden als Liste von XmlElement-Objekten verfügbar gemacht. Mithilfe dieser untergeordneten Elemente können VSIX-Erweiterungen zusätzliche Daten in der Manifestdatei definieren und zur Laufzeit aufzählen.
Installationselement
In diesem Abschnitt wird definiert, wie dieses Paket installiert werden kann, und die Anwendungs-SKUs, in denen es installiert werden kann. Dieser Abschnitt enthält die folgenden Attribute:
Experimental
- Legen Sie dieses Attribut auf "true" fest, wenn Sie eine Erweiterung haben, die derzeit für alle Benutzer installiert ist, aber Sie eine aktualisierte Version auf demselben Computer entwickeln. Wenn Sie beispielsweise MyExtension 1.0 für alle Benutzer installiert haben, Aber Sie MyExtension 2.0 auf demselben Computer debuggen möchten, legen Sie "Experimental="true" fest. Dieses Attribut ist in Visual Studio 2015 Update 1 und höher verfügbar.Scope
- Dieses Attribut kann den Wert "Global" oder "ProductExtension" annehmen:"Global" gibt an, dass die Installation nicht auf eine bestimmte SKU festgelegt ist. Dieser Wert wird beispielsweise verwendet, wenn ein Erweiterungs-SDK installiert wird.
"ProductExtension" gibt an, dass eine herkömmliche VSIX-Erweiterung (Version 1.0) für einzelne Visual Studio-SKUs installiert ist. Dies ist der Standardwert.
AllUsers
– Dieses optionale Attribut gibt an, ob dieses Paket für alle Benutzer installiert wird. Dieses Attribut ist standardmäßig "false", der angibt, dass das Paket pro Benutzer ist. (Wenn Sie diesen Wert auf "true" festlegen, muss der Installationsbenutzer die Administratorrechtestufe erhöhen, um das resultierende VSIX zu installieren.InstalledByMsi
- Dieses optionale Attribut gibt an, ob dieses Paket von einem MSI-Paket installiert wird. Von einem MSI installierte Pakete werden von MSI (Programme und Features) und nicht vom Visual Studio-Erweiterungs-Manager installiert und verwaltet. Dieses Attribut ist standardmäßig "false", was angibt, dass das Paket nicht von einer MSI-Datei installiert wird.SystemComponent
- Dieses optionale Attribut gibt an, ob dieses Paket als Systemkomponente betrachtet werden soll. Systemkomponenten werden in der Erweiterungs-Manager-Benutzeroberfläche nicht angezeigt und können nicht aktualisiert werden. Dieses Attribut ist standardmäßig "false", was angibt, dass das Paket keine Systemkomponente ist.AnyAttribute*
– DasInstallation
Element akzeptiert einen offenen Satz von Attributen, die zur Laufzeit als Namens-Wert-Paarwörterbuch verfügbar gemacht werden.<InstallationTarget>
-Dieses Element steuert den Speicherort, an dem das VSIX-Installationsprogramm das Paket installiert. Wenn der Wert desScope
Attributs "ProductExtension" lautet, muss das Paket auf eine SKU abzielen, die eine Manifestdatei als Teil des Inhalts installiert hat, um ihre Verfügbarkeit für Erweiterungen anzukündigen. Das<InstallationTarget>
Element weist die folgenden Attribute auf, wenn dasScope
Attribut den expliziten oder Standardwert "ProductExtension" aufweist:Id
- Dieses Attribut identifiziert das Paket. Das Attribut folgt der Namespacekonvention: Company.Product.Feature.Name. DasId
Attribut kann nur alphanumerische Zeichen enthalten und ist auf 100 Zeichen beschränkt. Erwartete Werte: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
- Dieses Attribut gibt einen Versionsbereich mit den minimalen und maximal unterstützten Versionen dieser SKU an. Ein Paket kann die versionen der unterstützten SKUs detailliert darstellen. Die Versionsbereichsnotation lautet [10.0 - 11.0], wobei[ - Mindestversion inklusive.
] – maximale Version inklusive.
( - Mindestversion exklusiv.
) - maximale Version exklusiv.
Einzelne Version # – nur die angegebene Version.
Wichtig
Version 2.0 des VSIX-Schemas wurde in Visual Studio 2012 eingeführt. Um dieses Schema zu verwenden, müssen Sie Visual Studio 2012 oder höher auf dem Computer installiert haben und die VSIXInstaller.exe verwenden, die Teil dieses Produkts ist. Sie können auf frühere Versionen von Visual Studio mit einem Visual Studio 2012 oder höher VSIXInstaller abzielen, aber nur mithilfe der späteren Versionen des Installers.
Visual Studio 2017-Versionsnummern finden Sie unter Visual Studio-Buildnummern und Veröffentlichungsdaten.
Wenn Sie die Version für Visual Studio 2017-Versionen ausdrücken, sollte die Nebenversion immer 0 sein. Beispielsweise sollte Visual Studio 2017, Version 15.3.26730.0, als [15.0.26730.0,16.0) ausgedrückt werden. Dies ist nur für Visual Studio 2017 und höhere Versionsnummern erforderlich.
AnyAttribute*
– Das<InstallationTarget>
Element ermöglicht eine offene Gruppe von Attributen, die zur Laufzeit als Namens-Wert-Paarwörterbuch verfügbar gemacht werden.
Abhängigkeit-Element
Dieses Element enthält eine Liste von Abhängigkeiten, die dieses Paket deklariert. Wenn Abhängigkeiten angegeben sind, müssen diese Pakete (durch sie Id
identifiziert) zuvor installiert worden sein.
<Dependency>
element – Dieses untergeordnete Element weist die folgenden Attribute auf:Id
- Dieses Attribut muss eine eindeutige ID für das abhängige Paket sein. Dieser Identitätswert muss mit dem<Metadata><Identity>Id
Attribut eines Pakets übereinstimmen, von dem dieses Paket abhängig ist. DasId
Attribut folgt der Namespacekonvention: Company.Product.Feature.Name. Das Attribut kann nur alphanumerische Zeichen enthalten und ist auf 100 Zeichen beschränkt.Version
- Dieses Attribut gibt einen Versionsbereich mit den minimalen und maximal unterstützten Versionen dieser SKU an. Ein Paket kann die versionen der unterstützten SKUs detailliert darstellen. Die Versionsbereichsnotation lautet [12.0, 13.0], wobei:[ - Mindestversion inklusive.
] – maximale Version inklusive.
( - Mindestversion exklusiv.
) - maximale Version exklusiv.
Einzelne Version # – nur die angegebene Version.
DisplayName
- Dieses Attribut ist der Anzeigename des abhängigen Pakets, das in UI-Elementen wie Dialogfeldern und Fehlermeldungen verwendet wird. Das Attribut ist optional, es sei denn, das abhängige Paket wird von MSI installiert.Location
- Dieses optionale Attribut gibt entweder den relativen Pfad innerhalb dieses VSIX zu einem geschachtelten VSIX-Paket oder eine URL zum Downloadspeicherort für die Abhängigkeit an. Dieses Attribut wird verwendet, um dem Benutzer beim Auffinden des erforderlichen Pakets zu helfen.AnyAttribute*
– DasDependency
Element akzeptiert einen offenen Satz von Attributen, die zur Laufzeit als Namens-Wert-Paarwörterbuch verfügbar gemacht werden.
Assets-Element
Dieses Element enthält eine Liste der <Asset>
Tags für jedes Erweiterungs- oder Inhaltselement, das von diesem Paket angezeigt wird.
<Asset>
- Dieses Element enthält die folgenden Attribute und Elemente:Type
- Typ der Erweiterung oder inhalte, die durch dieses Element dargestellt werden. Jedes<Asset>
Element muss über ein einzelnesType
Element verfügen, aber mehrere<Asset>
Elemente haben möglicherweise dasselbeType
. Dieses Attribut sollte gemäß Namespacekonventionen als vollqualifizierter Name dargestellt werden. Die bekannten Typen sind:Microsoft.VisualStudio.VsPackage
Microsoft.VisualStudio.MefComponent
Microsoft.VisualStudio.ToolboxControl
Microsoft.VisualStudio.Samples
Microsoft.VisualStudio.ProjectTemplate
Microsoft.VisualStudio.ItemTemplate
Microsoft.VisualStudio.Assembly
Sie können eigene Typen erstellen und ihnen eindeutige Namen zuweisen. Zur Laufzeit in Visual Studio kann Ihr Code diese benutzerdefinierten Typen über die Erweiterungs-Manager-API aufzählen und darauf zugreifen.
Path
- der relative Pfad zu der Datei oder dem Ordner innerhalb des Pakets, das die Ressource enthält.TargetVersion
- der Versionsbereich, auf den die angegebene Ressource angewendet wird. Wird verwendet, um mehrere Versionen von Ressourcen an verschiedene Versionen von Visual Studio zu versenden. Erfordert, dass Visual Studio 2017.3 oder höher Wirkung hat.AnyAttribute*
– Ein offener Satz von Attributen, die zur Laufzeit als Namens-Wert-Paarwörterbuch verfügbar gemacht werden.<AnyElement>*
- Jeder strukturierte Inhalt ist zwischen einem Anfangs-<Asset>
und Endtag zulässig. Alle Elemente werden als Liste von XmlElement-Objekten verfügbar gemacht. VSIX-Erweiterungen können strukturierte typspezifische Metadaten in der Manifestdatei definieren und zur Laufzeit aufzählen.
Platzhaltersyntax für Erweiterungsmanifeste
Die .vsixmanifest
Datei definiert den Build für das VSIX-Paket. Wenn ein Build angefordert wird, analysiert Visual Studio das Manifest, um ein Buildskript zu erstellen, das mithilfe von MSBuild erstellt wird. Sie können bestimmte Werte zur Erstellungszeit mithilfe von Platzhaltern festlegen, die ausgewertet werden, bevor das VSIX-Paket erstellt wird. Platzhalter werden verwendet, um auf Projekte zu verweisen, auf die im VSIX-Projekt verwiesen wird, MSBuild-Eigenschaften und MSBuild-Ziele, am häufigsten die Ziele, die Projektausgabegruppen darstellen. Projektausgabegruppen stellen Sammlungen von Dateien dar, die einem Projekt zugeordnet sind, und einige davon können in ein VSIX-Paket eingeschlossen werden. Beispiel: PkgDefProjectOutputGroup
, BuiltProjectOutputGroup
oder SatelliteDllsProjectOutputGroup
.
Um auf eine Eigenschaft zu verweisen, die im VSIX-Projekt definiert ist, verwenden Sie dieselbe Syntax wie in der Projektdatei selbst. $(PropertyName)
Das spezielle Token %CurrentProject%
verweist auf das VSIX-Projekt. Sie können auf andere Projekte verweisen, auf die in Ihrem VSIX-Projekt verwiesen wird, indem Sie das ProjectReference
Element in einer VSIX-Projektdatei verwendenName
, umgeben von Pipesymbolen (|
). Beispielsweise |ProjectTemplate1|
.
Sie können auf ein MSBuild-Ziel verweisen, indem Sie den Namen des Projekts (die Name
Eigenschaft des Projektverweises im VSIX-Projekt) und dann den Zielnamen angeben. Wenn Sie beispielsweise auf das Version
Ziel in einem der Projekte verweisen möchten, auf die in einem VSIX-Paket verwiesen wird, verwenden Sie die Syntax |ProjectName;Version|
. Das Ziel sollte einen Outputs
Wert aufweisen, der dem Kontext entspricht, in dem es verwendet wird. Das VSIX-Manifest enthält Orte, an denen die Ersetzung von Zeichenfolgenwerten und Elementauflistungen geeignet ist. Die Version-Zeichenfolge im Manifest kann beispielsweise wie folgt ersetzt werden:
<Identity Id="0000000-0000-0000-0000-000000000000" Version="|%CurrentProject%;GetVsixVersion|" Language="en-US" Publisher="Company" />
In diesem Fall sollte ein Ziel im VSIX-Projekt vorhanden sein GetVsixVersion
, das eine einfache Zeichenfolge zurückgeben sollte. Ein auf ein Objekt angewendeter
<Target Name="GetVsixVersion" Outputs="$(_VsixVersion)">
<PropertyGroup>
<_VsixVersion>1.2.3.4</_VsixVersion>
</PropertyGroup>
</Target>
Die Platzhalter werden zum Erstellen der richtigen VSIX-Manifestdatei mit dem VSIX-Projekt im SDK-Stil verwendet. Angenommen, Sie geben die Zielversion von Visual Studio mit der Eigenschaft "TargetFramework" an:
<TargetFramework>vs17.0</TargetFramework> // Target Visual Studio 2022 version 17.0
<TargetFramework>vs16.10</TargetFramework> // Target Visual Studio 2019 version 16.10
Basierend auf dem Zielframework transformiert der VSIX-Build die in der Erweiterungsmanifestdatei definierten Werte wie folgt. Für die folgende Syntax in der Manifestdatei:
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="|%CurrentProject%;GetInstallationTargetVersion|" />
Die ausgabe, die im VSIX-Projekt MSBuild-Code verwendet wird:
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0, 18.0)">
<ProductArchitecture>amd64</ProductArchitecture>
</InstallationTarget>
Und für den folgenden Code in einem Erweiterungsmanifest:
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="|%CurrentProject%;GetPrerequisiteTargetVersion|" DisplayName="Visual Studio core editor" />
Der Projektbuildcode lautet:
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[17.0, 18.0)" DisplayName="Visual Studio core editor" />
Diese Funktionalität wird auch in den VSIX-Manifestdateien verwendet, die Visual Studio generiert, um auf Projektausgabegruppen durch den Namen des Projektverweises und dann den Namen des MSBuild-Ziels durch ein Semikolon zu verweisen. Die Zeichenfolge |%CurrentProject%;PkgDefProjectOutputGroup|
bedeutet z. B. die Ausgabegruppe PkgDef, die auf die datei(n) verweist, die .pkgdef
dem aktuellen VSIX-Projekt zugeordnet ist. Einige der ProjectOutputGroup
in der Systembuilddatei "Microsoft.Common.CurrentVersion.targets " definierten Ziele werden in den von Visual Studio generierten VSIX-Manifesten verwendet. Zusätzliche Projektausgabegruppenziele, die im VSIX-Projekt verfügbar sind, werden in Microsoft.VsSDK.targets definiert. Die folgende Tabelle zeigt die definierten Projektausgabegruppen:
ProjectOutputGroup | Beschreibung |
---|---|
BuiltProjectOutputGroup | Die Dateien, die die Buildausgabe darstellen. |
ContentFilesProjectOutputGroup | Nicht binärdateien, die dem Projekt zugeordnet sind, z. B. HTML- und CSS-Dateien. |
DebugSymbolsProjectOutputGroup | Symboldateien (.pdb ) zum Debuggen einer Erweiterung in der experimentellen Instanz von Visual Studio. |
DocumentationFilesProjectOutputGroup | XML-Dokumentationsdateien. |
PkgDefProjectOutputGroup | Paketdefinition () Datei(.pkgdef en). |
PriFilesOutputGroup | Die .pri Ressourcendateien, die einem UWP-Projekt zugeordnet sind. |
SatelliteDllsProjectOutputGroup | Satellitenassemblys für lokalisierte Ressourcen. |
SDKRedistOutputGroup | Die verteilbaren Ordner aus den SDKs, auf die von einem Projekt verwiesen wird. |
SGenFilesOutputGroup | Die GenerateSerializationAssemblies-Dateien, die durch das GenerateSerializationAssemblies-Ziel und die Aufgabe generiert werden. |
SourceFilesProjectOutputGroup | Quellcodedateien. |
TemplateProjectOutputGroup | Projektvorlagen. |
Das Buildsystem füllt diese Ausgabegruppen mit den entsprechenden Dateien gemäß der Standardbuildlogik auf. In einem benutzerdefinierten Build können Sie den Projektausgabegruppen Elemente hinzufügen, indem Sie entweder das BeforeTargets
Attribut für Ihr Ziel auf eines der oben genannten Ziele festlegen und im Ziel den Code für die oben aufgeführten Ziele als Beispiele für die Verwendung der BuiltProjectOutputGroupKeyOutput
Aufgabe zum Festlegen der Ausgaben befolgen.
In erweiterten Szenarien können Sie auf ein Buildziel verweisen oder ein benutzerdefiniertes Ziel definieren, das Aufgerufen werden soll, und die hier beschriebene Syntax verwenden, um Werte für jedes Element im VSIX-Manifest einzufügen. Ein Ziel muss über den entsprechenden Ausgabeparameter verfügen, der der Erwartung des Kontexts entspricht, in dem es verwendet wird. Wenn eine Sammlung von Dateien, z. B. die erstellte Ausgabe eines Projekts, erwartet wird, wird ein Ziel benötigt, das die erforderlichen MSBuild-Elemente ausgibt. Die Projektausgabegruppe, die ziele erstellt Erwähnung zuvor erstellt wurde, kann als Beispiele verwendet werden, wenn Sie Ihre eigenen Ziele erstellen.
Beispielmanifest
<?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>