Procédure pas à pas : publication d’une extension Visual Studio via la ligne de commande

Cette procédure pas à pas vous montre comment publier une extension Visual Studio sur Visual Studio Marketplace à l’aide de la ligne de commande. Lorsque vous ajoutez votre extension à la Place de marché, les développeurs peuvent utiliser la boîte de dialogue Extensions et Mises à jour pour y rechercher les extensions nouvelles et mises à jour.

VsixPublisher.exe est l’outil en ligne de commande permettant de publier des extensions Visual Studio sur la Place de marché. Il est accessible à partir de ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\VsixPublisher.exe. Les commandes disponibles sur cet outil sont les suivantes : publish, deletePublisher, deleteExtension, login, logout.

Commandes

Publier...

Publie une extension sur la Place de marché. L’extension peut être un vsix, un fichier exe/msi ou un lien. Si l’extension existe déjà avec la même version, elle remplace l’extension. Si l’extension n’existe pas déjà, elle crée une extension.

Options de commande Description
charge utile (obligatoire) Chemin d’accès à la charge utile pour publier ou un lien à utiliser comme « URL d’informations supplémentaires ».
publishManifest (obligatoire) Chemin d’accès au fichier manifeste de publication à utiliser.
ignoreWarnings Liste des avertissements à ignorer lors de la publication d’une extension. Ces avertissements sont affichés en tant que messages de ligne de commande lors de la publication d’une extension. (par exemple, « VSIXValidatorWarning01, VSIXValidatorWarning02 »)
personalAccessToken Jeton d’accès personnel (PAT) utilisé pour authentifier l’éditeur. S’il n’est pas fourni, le pater est acquis auprès des utilisateurs connectés.
VsixPublisher.exe publish -payload "{path to vsix}" -publishManifest "{path to vs-publish.json}" -ignoreWarnings "VSIXValidatorWarning01,VSIXValidatorWarning02"

deletePublisher

Supprime un éditeur sur la Place de marché.

Options de commande Description
publisherName (obligatoire) Nom de l’éditeur (par exemple, l’identificateur).
personalAccessToken (obligatoire) Jeton d’accès personnel utilisé pour authentifier l’éditeur.
VsixPublisher.exe deletePublisher -publisherName "{Publisher Name}" -personalAccessToken "{Personal Access Token}"

deleteExtension

Supprime une extension de la Place de marché.

Options de commande Description
extensionName (obligatoire) Nom de l’extension à supprimer.
publisherName (obligatoire) Nom de l’éditeur (par exemple, l’identificateur).
personalAccessToken Jeton d’accès personnel utilisé pour authentifier l’éditeur. S’il n’est pas fourni, le pat est acquis auprès des utilisateurs connectés.
VsixPublisher.exe deleteExtension -extensionName "{Extension Name}" -publisherName "{Publisher Name}"

nom de connexion

Consigne un serveur de publication sur la machine.

Options de commande Description
personalAccessToken (obligatoire Jeton d’accès personnel utilisé pour authentifier l’éditeur.
publisherName (obligatoire) Nom de l’éditeur (par exemple, l’identificateur).
overwrite Spécifie que tout éditeur existant doit être remplacé par le nouveau jeton d’accès personnel.
VsixPublisher.exe login -personalAccessToken "{Personal Access Token}" -publisherName "{Publisher Name}"

logout

Journalise un éditeur hors de l’ordinateur.

Options de commande Description
publisherName (obligatoire) Nom de l’éditeur (par exemple, l’identificateur).
ignoreMissingPublisher Spécifie que l’outil ne doit pas se produire d’erreur si l’éditeur spécifié n’est pas déjà connecté.
VsixPublisher.exe logout -publisherName "{Publisher Name}"

createPublisher

Attention

Cette commande n'est plus disponible. Vous pouvez créer un éditeur en accédant à Visual Studio Marketplace.

fichier publishManifest

Un fichier publishManifest est utilisé par la commande de publication . Il représente toutes les métadonnées relatives à l’extension que la Place de marché doit connaître. Si l’extension en cours de chargement provient d’une extension VSIX, la propriété « identity » doit uniquement avoir le paramètre « internalName ». Cela est dû au fait que le reste des propriétés « identity » peut être généré à partir du fichier vsixmanifest. Si l’extension est une extension msi/exe ou une extension de lien, l’utilisateur doit fournir les champs requis dans la propriété « identity ». Le reste du manifeste contient des informations spécifiques à la Place de marché (par exemple, des catégories, si Q&A est activé, etc.).

Exemple de fichier publishManifest de l’extension VSIX :

{
    "$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.
}

Exemple de fichier MSI/EXE ou LINK publishManifest :

{
    "$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"
}

Fichiers multimédias

Les fichiers multimédias peuvent être fournis pour incorporer des éléments tels que des images dans le fichier lisez-moi. Par exemple, si une extension a le document Markdown « vue d’ensemble » suivant :

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

Pour résoudre « images/testlogo.png » dans l’exemple précédent, un utilisateur peut fournir des « assetFiles » dans son manifeste de publication comme ci-dessous :

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

Procédure pas à pas de publication

Prérequis

Pour suivre cette procédure pas à pas, vous devez installer le Kit de développement logiciel (SDK) Visual Studio. Pour plus d’informations, consultez Installation du Kit de développement logiciel (SDK) Visual Studio.

Créer une extension Visual Studio

Dans ce cas, nous allons utiliser une extension VSPackage par défaut, mais les mêmes étapes sont valides pour chaque type d’extension.

  1. Créez un VSPackage en C# nommé « TestPublish » qui a une commande de menu. Pour plus d’informations, consultez Création de votre première extension : Hello World.

Empaqueter votre extension

  1. Mettez à jour l’extension vsixmanifest avec les informations correctes sur le nom du produit, l’auteur et la version.

    update extension vsixmanifest

  2. Générez votre extension en mode Release . À présent, votre extension sera empaquetée en tant que VSIX dans le dossier \bin\Release.

  3. Vous pouvez double-cliquer sur VSIX pour vérifier l’installation.

Tester l’extension

Avant de distribuer l’extension, générez-la et testez-la pour vous assurer qu’elle est installée correctement dans l’instance expérimentale de Visual Studio.

  1. Dans Visual Studio, démarrez le débogage. pour ouvrir une instance expérimentale de Visual Studio.

  2. Dans l’instance expérimentale, accédez au menu Outils, puis cliquez sur Extensions et Mises à jour.... L’extension TestPublish doit apparaître dans le volet central et être activée.

  3. Dans le menu Outils , vérifiez que vous voyez la commande de test.

Publier l’extension sur la Place de marché via la ligne de commande

  1. Vérifiez que vous avez créé la version Release de votre extension et qu’elle est à jour.

  2. Vérifiez que vous avez créé publishmanifest.json et overview.md fichiers.

  3. Ouvrez la ligne de commande et accédez au répertoire ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\.

  4. Pour publier une nouvelle extension, utilisez la commande suivante :

    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. Lors de la publication réussie de l’extension, le message de ligne de commande suivant s’affiche :

    Uploaded 'MyVsixExtension' to the Marketplace.
    
  6. Vous pouvez vérifier la nouvelle extension que vous avez publiée en accédant à Visual Studio Marketplace

Installer l’extension à partir de Visual Studio Marketplace

Maintenant que l’extension est publiée, installez-la dans Visual Studio et testez-la là.

  1. Dans Visual Studio, dans le menu Outils, cliquez sur Extensions et Mises à jour....

  2. Cliquez sur Online , puis recherchez TestPublish.

  3. Cliquez sur Télécharger. L’extension sera ensuite planifiée pour l’installation.

  4. Pour terminer l’installation, fermez toutes les instances de Visual Studio.

Supprimer l’extension

Vous pouvez supprimer l’extension de Visual Studio Marketplace et de votre ordinateur.

Pour supprimer l’extension de la Place de marché via la ligne de commande

  1. Si vous souhaitez supprimer une extension, utilisez la commande suivante :

    VsixPublisher.exe deleteExtension -publisherName "TestVSIXPublisher" -extensionName "MyVsixExtension"
    
  2. Lors de la suppression réussie de l’extension, le message de ligne de commande suivant s’affiche :

    Removed 'MyVsixExtension' from the Marketplace.
    

Pour supprimer l’extension de votre ordinateur

  1. Dans Visual Studio, dans le menu Outils, cliquez sur Extensions et Mises à jour.

  2. Sélectionnez « MyVsixExtension », puis cliquez sur Désinstaller. L’extension sera ensuite planifiée pour la désinstallation.

  3. Pour terminer la désinstallation, fermez toutes les instances de Visual Studio.