Exemplarische Vorgehensweise: Veröffentlichen einer Visual Studio-Erweiterung über die Befehlszeile

In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie eine Visual Studio-Erweiterung mithilfe der Befehlszeile auf dem Visual Studio Marketplace veröffentlichen. Wenn Sie Ihre Erweiterung zum Marketplace hinzufügen, können Entwickler das Dialogfeld "Erweiterungen und Updates " verwenden, um dort nach neuen und aktualisierten Erweiterungen zu suchen.

VsixPublisher.exe ist das Befehlszeilentool zum Veröffentlichen von Visual Studio-Erweiterungen auf dem Marketplace. Auf sie kann über ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\VsixPublisher.exe zugegriffen werden. Befehle, die für dieses Tool verfügbar sind: publish, deletePublisher, deleteExtension, login, logout.

Befehle

Veröffentlichen

Veröffentlicht eine Erweiterung auf dem Marketplace. Die Erweiterung kann ein vsix, eine exe/msi-Datei oder ein Link sein. Wenn die Erweiterung bereits mit derselben Version vorhanden ist, wird die Erweiterung überschrieben. Wenn die Erweiterung noch nicht vorhanden ist, wird eine neue Erweiterung erstellt.

Befehlsoptionen Beschreibung
Nutzlast (erforderlich) Entweder ein Pfad zur zu veröffentlichenden Nutzlast oder ein Link, der als "weitere Info-URL" verwendet werden soll.
publishManifest (erforderlich) Pfad zur zu verwendenden Veröffentlichungsmanifestdatei.
ignoreWarnings Liste der Warnungen, die beim Veröffentlichen einer Erweiterung ignoriert werden sollen. Diese Warnungen werden beim Veröffentlichen einer Erweiterung als Befehlszeilenmeldungen angezeigt. (z. B. "VSIXValidatorWarning01, VSIXValidatorWarning02")
personalAccessToken Persönliches Zugriffstoken (Personal Access Token, PAT), das zum Authentifizieren des Herausgebers verwendet wird. Falls nicht angegeben, wird der PAT von den angemeldeten Benutzern erworben.
VsixPublisher.exe publish -payload "{path to vsix}" -publishManifest "{path to vs-publish.json}" -ignoreWarnings "VSIXValidatorWarning01,VSIXValidatorWarning02"

deletePublisher

Löscht einen Herausgeber auf dem Marketplace.

Befehlsoptionen Beschreibung
publisherName (erforderlich) Der Name des Herausgebers (z. B. der Bezeichner).
personalAccessToken (erforderlich) Persönliches Zugriffstoken, das zum Authentifizieren des Herausgebers verwendet wird.
VsixPublisher.exe deletePublisher -publisherName "{Publisher Name}" -personalAccessToken "{Personal Access Token}"

deleteExtension

Löscht eine Erweiterung aus dem Marketplace.

Befehlsoptionen Beschreibung
extensionName (erforderlich) Der Name der zu löschenden Erweiterung.
publisherName (erforderlich) Der Name des Herausgebers (z. B. der Bezeichner).
personalAccessToken Persönliches Zugriffstoken, das zum Authentifizieren des Herausgebers verwendet wird. Falls nicht angegeben, wird der Pat von den angemeldeten Benutzern erworben.
VsixPublisher.exe deleteExtension -extensionName "{Extension Name}" -publisherName "{Publisher Name}"

login

Protokolliert einen Herausgeber auf dem Computer.

Befehlsoptionen Beschreibung
personalAccessToken (erforderlich) Persönliches Zugriffstoken, das zum Authentifizieren des Herausgebers verwendet wird.
publisherName (erforderlich) Der Name des Herausgebers (z. B. der Bezeichner).
overwrite Gibt an, dass ein vorhandener Herausgeber mit dem neuen persönlichen Zugriffstoken überschrieben werden soll.
VsixPublisher.exe login -personalAccessToken "{Personal Access Token}" -publisherName "{Publisher Name}"

logout

Protokolliert einen Herausgeber vom Computer.

Befehlsoptionen Beschreibung
publisherName (erforderlich) Der Name des Herausgebers (z. B. der Bezeichner).
ignoreMissingPublisher Gibt an, dass das Tool nicht fehler sollte, wenn der angegebene Herausgeber noch nicht angemeldet ist.
VsixPublisher.exe logout -publisherName "{Publisher Name}"

createPublisher

Achtung

Dieser Befehl ist nicht mehr verfügbar. Sie können einen neuen Herausgeber erstellen, indem Sie zu Visual Studio Marketplace navigieren.

publishManifest-Datei

Eine publishManifest-Datei wird vom Befehl zum Veröffentlichen verwendet. Es stellt alle Metadaten über die Erweiterung dar, die der Marketplace kennen muss. Wenn die hochgeladene Erweiterung von einer VSIX-Erweiterung stammt, darf die Eigenschaft "identity" nur den Satz "internalName" haben. Dies liegt daran, dass die restlichen "Identity"-Eigenschaften aus der Vsixmanifest-Datei generiert werden können. Wenn es sich bei der Erweiterung um eine msi/exe- oder eine Linkerweiterung handelt, muss der Benutzer die erforderlichen Felder in der Eigenschaft "Identity" angeben. Der Rest des Manifests enthält Spezifische Informationen für den Marketplace (z. B. Kategorien, ob Q&A aktiviert ist usw.).

VSIX-Erweiterung publishManifest-Dateibeispiel:

{
    "$schema": "http://json.schemastore.org/vsix-publish",
    "categories": [ "build", "coding" ],  // The categories of the extension. Between 1 and 3 categories are required.
    "identity": {
        "internalName": "MyVsixExtension" // If not specified, we try to generate the name from the display name of the extension in the vsixmanifest file.
                                            // Required if the display name is not the actual name of the extension.
    },
    "overview": "overview.md",            // Path to the "readme" file that gets uploaded to the Marketplace. Required.
    "priceCategory": "free",              // Either "free", "trial", or "paid". Defaults to "free".
    "publisher": "MyPublisherName",       // The name of the publisher. Required.
    "private": false,                     // Specifies whether or not the extension should be public when uploaded. Defaults to false.
    "qna": true,                          // Specifies whether or not the extension should have a Q&A section. Defaults to true.
    "repo": "https://github.com/MyPublisherName/MyVsixExtension" // Not required.
}

MSI/EXE- oder LINK publishManifest-Dateibeispiel:

{
    "$schema": "http://json.schemastore.org/vsix-publish",
    "categories": [ "build", "coding" ],
    "identity": {
        "description": "My extension.", // The description of the extension. Required for non-vsix extensions.
        "displayName": "My Extension",  // The display name of the extension. Required for non-vsix extensions.
        "icon": "\\path\\to\\icon.ico", // The path to an icon file (can be relative to the json file location). Required for non-vsix extensions.
        "installTargets": [             // The installation targets for the extension. Required for non-vsix extensions.
            {
                "sku": "Microsoft.VisualStudio.Community",
                "version": "[10.0, 16.0)"
            }
        ],
        "internalName": "MyExtension",
        "language": "en-US",            // The default language id of the extension. Can be in the "1033" or "en-US" format. Required for non-vsix extensions.
        "tags": [ "tag1", "tag2" ],     // The tags for the extension. Not required.
        "version": "3.7.0",             // The version of the extension. Required for non-vsix extensions.
        "vsixId": "MyExtension",        // The vsix id of the extension. Not required but useful for showing updates to installed extensions.
    },
    "overview": "overview.md",
    "priceCategory": "free",
    "publisher": "MyPublisherName",
    "private": false,
    "qna": true,
    "repo": "https://github.com/MyPublisherName/MyVsixExtension"
}

Objektdateien

Objektdateien können zum Einbetten von Elementen wie Bildern in die Readme-Datei bereitgestellt werden. Wenn beispielsweise eine Erweiterung das folgende "Übersicht"-Markdown-Dokument aufweist:

TestExtension
...
This is test extension.
![Test logo](images/testlogo.png "Test logo")

Um "images/testlogo.png" im vorherigen Beispiel aufzulösen, kann ein Benutzer in ihrem Veröffentlichungsmanifest wie unten "assetFiles" bereitstellen:

{
    "assetFiles": [
        {
            "pathOnDisk": "\\path\\to\\logo.png",
            "targetPath": "images/logo.png"
        }
    ],
    // other required fields
}

Exemplarische Vorgehensweise für die Veröffentlichung

Voraussetzungen

Um dieser exemplarischen Vorgehensweise folgen zu können, müssen Sie das Visual Studio SDK installieren. Weitere Informationen finden Sie unter Installieren des Visual Studio SDK.

Erstellen einer Visual Studio-Erweiterung

In diesem Fall verwenden wir eine standardmäßige VSPackage-Erweiterung, aber die gleichen Schritte gelten für jede Art von Erweiterung.

  1. Erstellen Sie ein VSPackage in C# mit dem Namen "TestPublish", das über einen Menübefehl verfügt. Weitere Informationen finden Sie unter Creating your First Extension: Hallo Welt.

Packen der Erweiterung

  1. Aktualisieren Sie die Erweiterung vsixmanifest mit den richtigen Informationen zu Produktname, Autor und Version.

    update extension vsixmanifest

  2. Erstellen Sie Ihre Erweiterung im Releasemodus . Jetzt wird Ihre Erweiterung als VSIX im Ordner "\bin\Release" gepackt.

  3. Sie können auf den VSIX doppelklicken, um die Installation zu überprüfen.

Testen der Erweiterung

Bevor Sie die Erweiterung verteilen, erstellen und testen, um sicherzustellen, dass sie in der experimentellen Instanz von Visual Studio ordnungsgemäß installiert ist.

  1. Starten Sie in Visual Studio das Debuggen. um eine experimentelle Instanz von Visual Studio zu öffnen.

  2. Wechseln Sie in der experimentellen Instanz zum Menü "Extras ", und klicken Sie auf "Erweiterungen und Updates...". Die TestPublish-Erweiterung sollte im mittleren Bereich angezeigt und aktiviert sein.

  3. Stellen Sie im Menü "Extras " sicher, dass der Befehl "Test" angezeigt wird.

Veröffentlichen der Erweiterung auf dem Marketplace über die Befehlszeile

  1. Stellen Sie sicher, dass Sie die Release-Version Ihrer Erweiterung erstellt haben und dass sie auf dem neuesten Stand ist.

  2. Stellen Sie sicher, dass Sie publishmanifest.json und overview.md Dateien erstellt haben.

  3. Öffnen Sie die Befehlszeile, und navigieren Sie zum Verzeichnis ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\.

  4. Verwenden Sie den folgenden Befehl, um eine neue Erweiterung zu veröffentlichen:

    VsixPublisher.exe publish -payload "{Path to vsix file}"  -publishManifest "{path to publishManifest file}"  -personalAccessToken "{Personal Access Token that is used to authenticate the publisher. If not provided, the pat is acquired from the logged-in users.}"
    
  5. Bei erfolgreicher Veröffentlichung der Erweiterung wird die folgende Befehlszeilenmeldung angezeigt:

    Uploaded 'MyVsixExtension' to the Marketplace.
    
  6. Sie können die neue Erweiterung überprüfen, die Sie veröffentlicht haben, indem Sie zu Visual Studio Marketplace navigieren.

Installieren der Erweiterung aus dem Visual Studio Marketplace

Nachdem die Erweiterung veröffentlicht wurde, installieren Sie sie in Visual Studio und testen sie dort.

  1. Klicken Sie in Visual Studio im Menü "Extras " auf "Erweiterungen und Updates...".

  2. Klicken Sie auf "Online", und suchen Sie dann nach TestPublish.

  3. Klicken Sie auf Download. Die Erweiterung wird dann für die Installation geplant.

  4. Schließen Sie alle Instanzen von Visual Studio, um die Installation abzuschließen.

Entfernen der Erweiterung

Sie können die Erweiterung aus dem Visual Studio Marketplace und von Ihrem Computer entfernen.

So entfernen Sie die Erweiterung über die Befehlszeile aus dem Marketplace

  1. Wenn Sie eine Erweiterung entfernen möchten, verwenden Sie den folgenden Befehl:

    VsixPublisher.exe deleteExtension -publisherName "TestVSIXPublisher" -extensionName "MyVsixExtension"
    
  2. Beim erfolgreichen Löschen der Erweiterung wird die folgende Befehlszeilenmeldung angezeigt:

    Removed 'MyVsixExtension' from the Marketplace.
    

So entfernen Sie die Erweiterung von Ihrem Computer

  1. Klicken Sie in Visual Studio im Menü Extras auf Erweiterungen und Updates.

  2. Wählen Sie "MyVsixExtension" aus, und klicken Sie dann auf " Deinstallieren". Die Erweiterung wird dann für die Deinstallation geplant.

  3. Schließen Sie alle Instanzen von Visual Studio, um die Deinstallation abzuschließen.