Anatomie eines VSIX-Pakets
Ein VSIX-Paket ist eine .vsix
Datei, die eine oder mehrere Visual Studio-Erweiterungen enthält, zusammen mit den Metadaten, die Visual Studio zum Klassifizieren und Installieren der Erweiterungen verwendet. Diese Metadaten sind im VSIX-Manifest und in der Datei [Content_Types].xml enthalten. Ein VSIX-Paket kann auch eine oder mehrere Extension.vsixlangpack-Dateien enthalten, um lokalisierten Setuptext bereitzustellen, und kann zusätzliche VSIX-Pakete zum Installieren von Abhängigkeiten enthalten.
Das VSIX-Paketformat folgt dem OPC-Standard (Open Packaging Conventions). Das Paket enthält Binärdateien und Unterstützende Dateien zusammen mit einer [Content_Types].xml Datei und einer .vsix
Manifestdatei. Ein VSIX-Paket kann die Ausgabe mehrerer Projekte oder sogar mehrere Pakete enthalten, die über eigene Manifeste verfügen.
Hinweis
Die Namen der in VSIX-Paketen enthaltenen Dateien dürfen keine Leerzeichen oder Zeichen enthalten, die in URI (Uniform Resource Identifiers) reserviert sind, wie unter [RFC2396] definiert.
Das VSIX-Manifest
Das VSIX-Manifest enthält Informationen zur zu installierenden Erweiterung und folgt dem VSIX-Schema. Weitere Informationen finden Sie unter VSIX-Erweiterungsschema 2.0- Referenz.
Das VSIX-Manifest muss benannt extension.vsixmanifest
werden, wenn es in einer .vsix
Datei enthalten ist.
der Inhalt
Ein VSIX-Paket kann Vorlagen, Toolboxelemente, VSPackages oder eine andere Art von Erweiterung enthalten, die von Visual Studio unterstützt wird.
Sprachpakete
Ein VSIX-Paket kann einmal oder mehrere Extension.vsixlangpack-Dateien enthalten, um lokalisierten Text während der Installation bereitzustellen. Weitere Informationen finden Sie unter Lokalisieren von VSIX-Paketen.
Abhängigkeiten und Verweise
Ein VSIX-Paket kann andere VSIX-Pakete als Verweise enthalten. Jedes dieser anderen Pakete muss ein eigenes VSIX-Manifest enthalten.
Wenn ein Benutzer versucht, eine Erweiterung mit Abhängigkeiten zu installieren, überprüft das Installationsprogramm, ob die erforderlichen Assemblys auf dem Benutzersystem installiert sind. Wenn die erforderlichen Assemblys nicht gefunden werden, zeigt Erweiterungen und Updates eine Liste der fehlenden Assemblys an.
Wenn das Erweiterungsmanifest mindestens ein Abhängigkeitselement enthält, vergleicht Erweiterungen und Updates das Manifest jeder Referenz mit den Erweiterungen, die auf dem System installiert sind, und installiert die referenzierte Erweiterung, wenn sie noch nicht installiert ist. Wenn eine frühere Version einer referenzierten Erweiterung installiert ist, ersetzt sie die neuere Version.
Wenn ein Projekt in einer Projektmappe mit mehreren Projekten einen Verweis auf ein anderes Projekt in derselben Lösung enthält, enthält das VSIX-Paket die Abhängigkeiten dieses Projekts. Sie können dieses Verhalten außer Kraft setzen, indem Sie den Verweis für das interne Projekt auswählen und dann im Eigenschaftenfenster die In VSIX-Eigenschaft enthaltenen Ausgabegruppen auf festlegenBuiltProjectOutputGroup
.
Um Satelliten-DLLs aus referenzierten Assemblys in das VSIX-Paket einzuschließen, fügen Sie SatelliteDllsProjectOutputGroup
die ausgabegruppen hinzu, die in der VSIX-Eigenschaft enthalten sind.
Installationspfad
Während der Installation sucht Erweiterungen und Updates nach dem Inhalt des VSIX-Pakets in einem Ordner unter %LocalAppData%\Microsoft\VisualStudio\{version}\Extensions
.
Standardmäßig gilt die Installation nur für den aktuellen Benutzer, da %LocalAppData% ein benutzerspezifisches Verzeichnis ist. Wenn Sie jedoch das AllUsers
Element des Manifests True
auf festlegen, wird die Erweiterung unter ..\{VisualStudioInstallationFolder}\Common7\IDE\Extensions
installiert und steht allen Benutzern des Computers zur Verfügung.
[Content_Types].xml
Die Datei [Content_Types].xml identifiziert die Dateitypen in der erweiterten .vsix
Datei. Visual Studio verwendet diese Datei während der Installation des Pakets, installiert aber nicht die Datei selbst. Weitere Informationen zu dieser Datei finden Sie in der Struktur der Datei [Content_types].xml.
Eine [Content_Types]-.xml Datei ist vom OPC-Standard (Open Packaging Conventions) erforderlich. Weitere Informationen zu OPC finden Sie unter OPC: Ein neuer Standard zum Verpacken Ihrer Daten.