Share via


Tutorial: Publicación de una extensión de Visual Studio a través de la línea de comandos

En este tutorial se muestra cómo publicar una extensión de Visual Studio en Visual Studio Marketplace mediante la línea de comandos. Al agregar la extensión a Marketplace, los desarrolladores pueden usar el cuadro de diálogo Extensiones y Novedades para buscar extensiones nuevas y actualizadas.

VsixPublisher.exe es la herramienta de línea de comandos para publicar extensiones de Visual Studio en Marketplace. Se puede tener acceso desde ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\VsixPublisher.exe. Los comandos disponibles en esta herramienta son: publish, deletePublisher, deleteExtension, login, logout.

Comandos

Publicar:

Publica una extensión en Marketplace. La extensión puede ser vsix, un archivo exe/msi o un vínculo. Si la extensión ya existe con la misma versión, sobrescribirá la extensión. Si la extensión aún no existe, creará una nueva extensión.

Opciones de comando Descripción
payload (obligatorio) Una ruta de acceso a la carga para publicar o un vínculo que se va a usar como la "dirección URL de más información".
publishManifest (obligatorio) Ruta de acceso al archivo de manifiesto de publicación que se va a usar.
ignoreWarnings Lista de advertencias que se omitirán al publicar una extensión. Estas advertencias se muestran como mensajes de línea de comandos al publicar una extensión. (por ejemplo, "VSIXValidatorWarning01, VSIXValidatorWarning02")
personalAccessToken Token de acceso personal (PAT) que se usa para autenticar al publicador. Si no se proporciona, el PAT se adquiere de los usuarios que han iniciado sesión.
VsixPublisher.exe publish -payload "{path to vsix}" -publishManifest "{path to vs-publish.json}" -ignoreWarnings "VSIXValidatorWarning01,VSIXValidatorWarning02"

deletePublisher

Elimina un publicador en Marketplace.

Opciones de comando Descripción
publisherName (obligatorio) Nombre del publicador (por ejemplo, el identificador).
personalAccessToken (obligatorio) Token de acceso personal que se usa para autenticar al publicador.
VsixPublisher.exe deletePublisher -publisherName "{Publisher Name}" -personalAccessToken "{Personal Access Token}"

deleteExtension

Elimina una extensión de Marketplace.

Opciones de comando Descripción
extensionName (obligatorio) Nombre de la extensión que se va a eliminar.
publisherName (obligatorio) Nombre del publicador (por ejemplo, el identificador).
personalAccessToken Token de acceso personal que se usa para autenticar al publicador. Si no se proporciona, la pat se adquiere de los usuarios que han iniciado sesión.
VsixPublisher.exe deleteExtension -extensionName "{Extension Name}" -publisherName "{Publisher Name}"

login

Registra un publicador en la máquina.

Opciones de comando Descripción
personalAccessToken (obligatorio) Token de acceso personal que se usa para autenticar al publicador.
publisherName (obligatorio) Nombre del publicador (por ejemplo, el identificador).
overwrite Especifica que cualquier publicador existente debe sobrescribirse con el nuevo token de acceso personal.
VsixPublisher.exe login -personalAccessToken "{Personal Access Token}" -publisherName "{Publisher Name}"

logout

Registra un publicador fuera de la máquina.

Opciones de comando Descripción
publisherName (obligatorio) Nombre del publicador (por ejemplo, el identificador).
ignoreMissingPublisher Especifica que la herramienta no debe producir errores si el publicador especificado aún no ha iniciado sesión.
VsixPublisher.exe logout -publisherName "{Publisher Name}"

createPublisher

Precaución

Este comando ya no está disponible. Para crear un nuevo publicador, vaya a Visual Studio Marketplace.

archivo publishManifest

El comando publishmanifest usa un archivo publishManifest. Representa todos los metadatos sobre la extensión que marketplace necesita saber. Si la extensión que se carga procede de una extensión VSIX, la propiedad "identity" solo debe tener establecido "internalName". Esto se debe a que el resto de las propiedades "identity" se pueden generar a partir del archivo vsixmanifest. Si la extensión es msi/exe o una extensión de vínculo, el usuario debe proporcionar los campos necesarios en la propiedad "identity". El resto del manifiesto contiene información específica de Marketplace (por ejemplo, categorías, si el Q&A está habilitado, etc.).

Ejemplo de archivo publishManifest de extensión 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.
}

Ejemplo de archivo MSI/EXE o 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"
}

Archivos de recursos

Los archivos de recursos se pueden proporcionar para insertar elementos como imágenes en el archivo Léame. Por ejemplo, si una extensión tiene el siguiente documento de Markdown de "información general":

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

Para resolver "images/testlogo.png" en el ejemplo anterior, un usuario puede proporcionar "assetFiles" en su manifiesto de publicación como el siguiente:

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

Tutorial de publicación

Requisitos previos

Para seguir este tutorial, debe instalar SDK de Visual Studio. Para obtener más información, vea Instalación del SDK de Visual Studio.

Creación de una extensión de Visual Studio

En este caso, usaremos una extensión VSPackage predeterminada, pero los mismos pasos son válidos para cada tipo de extensión.

  1. Cree un VSPackage en C# denominado "TestPublish" que tenga un comando de menú. Para obtener más información, consulte Creación de la primera extensión: Hola mundo.

Empaquetado de la extensión

  1. Actualice la extensión vsixmanifest con la información correcta sobre el nombre del producto, el autor y la versión.

    update extension vsixmanifest

  2. Compile la extensión en modo de versión . Ahora la extensión se empaquetará como VSIX en la carpeta \bin\Release.

  3. Puede hacer doble clic en VSIX para comprobar la instalación.

Prueba de la extensión

Antes de distribuir la extensión, compilarla y probarla para asegurarse de que está instalada correctamente en la instancia experimental de Visual Studio.

  1. En Visual Studio, inicie la depuración. para abrir una instancia experimental de Visual Studio.

  2. En la instancia experimental, vaya al menú Herramientas y haga clic en Extensiones y Novedades.... La extensión TestPublish debe aparecer en el panel central y estar habilitada.

  3. En el menú Herramientas , asegúrese de ver el comando de prueba.

Publicación de la extensión en Marketplace a través de la línea de comandos

  1. Asegúrese de que ha creado la versión release de la extensión y de que está actualizada.

  2. Asegúrese de que ha creado archivos publishmanifest.json y overview.md.

  3. Abra la línea de comandos y vaya al directorio ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\.

  4. Para publicar una nueva extensión, use el siguiente comando:

    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. Al publicar correctamente la extensión, verá el siguiente mensaje de línea de comandos:

    Uploaded 'MyVsixExtension' to the Marketplace.
    
  6. Para comprobar la nueva extensión publicada, vaya a Visual Studio Marketplace.

Instalación de la extensión desde Visual Studio Marketplace

Ahora que se ha publicado la extensión, instálela en Visual Studio y pruébela.

  1. En Visual Studio, en el menú Herramientas, haga clic en Extensiones y Novedades....

  2. Haga clic en En línea y busque TestPublish.

  3. Haga clic en Descargar. La extensión se programará para la instalación.

  4. Para completar la instalación, cierre todas las instancias de Visual Studio.

Eliminación de la extensión

Puede quitar la extensión de Visual Studio Marketplace y del equipo.

Para quitar la extensión de Marketplace a través de la línea de comandos

  1. Si desea quitar una extensión, use el siguiente comando:

    VsixPublisher.exe deleteExtension -publisherName "TestVSIXPublisher" -extensionName "MyVsixExtension"
    
  2. Al eliminar correctamente la extensión, verá el siguiente mensaje de línea de comandos:

    Removed 'MyVsixExtension' from the Marketplace.
    

Para quitar la extensión del equipo

  1. En Visual Studio, en el menú Herramientas, haga clic en Extensiones y actualizaciones.

  2. Seleccione "MyVsixExtension" y haga clic en Desinstalar. La extensión se programará para la desinstalación.

  3. Para completar la desinstalación, cierre todas las instancias de Visual Studio.