Demonstra Passo a passo: Publicando uma extensão do Visual Studio via linha de comando

Este passo a passo mostra como publicar uma extensão do Visual Studio no Visual Studio Marketplace usando a linha de comando. Quando você adiciona sua extensão ao Marketplace, os desenvolvedores podem usar a caixa de diálogo Extensões e atualizações para procurar extensões novas e atualizadas.

VsixPublisher.exe é a ferramenta de linha de comando para publicar extensões do Visual Studio no Marketplace. Ele pode ser acessado em ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\VsixPublisher.exe. Os comandos disponíveis nesta ferramenta são: publish, deletePublisher, deleteExtension, login, logout.

Comandos

Publicar…

Publica uma extensão para o Marketplace. A extensão pode ser um vsix, um arquivo exe/msi ou um link. Se a extensão já existir com a mesma versão, ela substituirá a extensão. Se a extensão ainda não existir, ela criará uma nova extensão.

Opções de comando Descrição
Carga útil (obrigatório) Um caminho para a carga útil a ser publicada ou um link para usar como a "URL de mais informações".
publishManifest (obrigatório) Caminho para o arquivo de manifesto de publicação a ser usado.
ignoreAvisos Lista de avisos a serem ignorados ao publicar uma extensão. Esses avisos são mostrados como mensagens de linha de comando ao publicar uma extensão. (por exemplo, "VSIXValidatorWarning01, VSIXValidatorWarning02")
personalAccessToken Token de Acesso Pessoal (PAT) usado para autenticar o editor. Se não for fornecido, o PAT é adquirido dos usuários conectados.
VsixPublisher.exe publish -payload "{path to vsix}" -publishManifest "{path to vs-publish.json}" -ignoreWarnings "VSIXValidatorWarning01,VSIXValidatorWarning02"

excluirPublisher

Exclui um editor no Marketplace.

Opções de comando Descrição
publisherName (obrigatório) O nome do editor (por exemplo, o identificador).
personalAccessToken (obrigatório) Token de acesso pessoal usado para autenticar o editor.
VsixPublisher.exe deletePublisher -publisherName "{Publisher Name}" -personalAccessToken "{Personal Access Token}"

excluirExtensão

Exclui uma extensão do Marketplace.

Opções de comando Descrição
extensionName (obrigatório) O nome da extensão a ser excluída.
publisherName (obrigatório) O nome do editor (por exemplo, o identificador).
personalAccessToken Token de acesso pessoal usado para autenticar o editor. Se não for fornecido, o pat é adquirido dos usuários conectados.
VsixPublisher.exe deleteExtension -extensionName "{Extension Name}" -publisherName "{Publisher Name}"

login

Registra um editor na máquina.

Opções de comando Descrição
personalAccessToken (obrigatório Token de acesso pessoal usado para autenticar o editor.
publisherName (obrigatório) O nome do editor (por exemplo, o identificador).
substituir Especifica que qualquer editor existente deve ser substituído pelo novo token de acesso pessoal.
VsixPublisher.exe login -personalAccessToken "{Personal Access Token}" -publisherName "{Publisher Name}"

logout

Efetua logout de um editor da máquina.

Opções de comando Descrição
publisherName (obrigatório) O nome do editor (por exemplo, o identificador).
ignoreMissingPublisher Especifica que a ferramenta não deve apresentar erro se o editor especificado ainda não estiver conectado.
VsixPublisher.exe logout -publisherName "{Publisher Name}"

createPublisher

Cuidado

Este comando não está mais disponível. Você pode criar um novo editor navegando até o Visual Studio Marketplace.

arquivo publishManifest

Um arquivo publishManifest é usado pelo comando publicar . Ele representa todos os metadados sobre a extensão que o Marketplace precisa saber. Se a extensão que está sendo carregada for de uma extensão VSIX, a propriedade "identity" deverá ter apenas o "internalName" definido. Isso ocorre porque o restante das propriedades "identity" pode ser gerado a partir do arquivo vsixmanifest. Se a extensão for um msi/exe ou uma extensão de link, o usuário deverá fornecer os campos obrigatórios na propriedade "identity". O restante do manifesto contém informações específicas do Marketplace (por exemplo, categorias, se as Perguntas e Respostas estão habilitadas, etc.).

Exemplo de arquivo publishManifest da extensão 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.
}

Exemplo de arquivo 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"
}

Arquivos de ativos

Os arquivos de ativos podem ser fornecidos para incorporar coisas como imagens no arquivo Leiame. Por exemplo, se uma extensão tiver o seguinte documento de Markdown de "visão geral":

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

Para resolver "images/testlogo.png" no exemplo anterior, um usuário pode fornecer "assetFiles" em seu manifesto de publicação como abaixo:

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

Passo a passo da publicação

Pré-requisitos

Para seguir este passo a passo, você deve instalar o SDK do Visual Studio. Para obter mais informações, consulte Instalando o SDK do Visual Studio.

Criar uma extensão do Visual Studio

Nesse caso, usaremos uma extensão VSPackage padrão, mas as mesmas etapas são válidas para cada tipo de extensão.

  1. Crie um VSPackage em C# chamado "TestPublish" que tenha um comando de menu. Para obter mais informações, consulte Criando sua primeira extensão: Hello World.

Empacotar sua extensão

  1. Atualize a extensão vsixmanifest com as informações corretas sobre o nome do produto, autor e versão.

    update extension vsixmanifest

  2. Crie sua extensão no modo Release . Agora sua extensão será empacotada como um VSIX na pasta \bin\Release.

  3. Você pode clicar duas vezes no VSIX para verificar a instalação.

Testar a extensão

Antes de distribuir a extensão, compile-a e teste-a para verificar se ela está instalada corretamente na instância experimental do Visual Studio.

  1. No Visual Studio, inicie a depuração. para abrir uma instância experimental do Visual Studio.

  2. Na instância experimental, vá para o menu Ferramentas e clique em Extensões e Atualizações.... A extensão TestPublish deve aparecer no painel central e ser habilitada.

  3. No menu Ferramentas, certifique-se de ver o comando test.

Publicar a extensão no Marketplace via linha de comando

  1. Verifique se você criou a versão Release da sua extensão e se ela está atualizada.

  2. Verifique se você criou os arquivos publishmanifest.json e overview.md.

  3. Abra a linha de comando e navegue até o diretório ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\.

  4. Para publicar uma nova extensão, use o seguinte 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. Na publicação bem-sucedida da extensão, você verá a seguinte mensagem de linha de comando:

    Uploaded 'MyVsixExtension' to the Marketplace.
    
  6. Você pode verificar a nova extensão publicada navegando até o Visual Studio Marketplace

Instalar a extensão do Visual Studio Marketplace

Agora que a extensão foi publicada, instale-a no Visual Studio e teste-a lá.

  1. No Visual Studio, no menu Ferramentas , clique em Extensões e Atualizações....

  2. Clique em Online e, em seguida, procure TestPublish.

  3. Clique em Download. A extensão será então agendada para instalação.

  4. Para concluir a instalação, feche todas as instâncias do Visual Studio.

Remover a extensão

Você pode remover a extensão do Visual Studio Marketplace e do seu computador.

Para remover a extensão do Marketplace por meio da linha de comando

  1. Se você deseja remover uma extensão, use o seguinte comando:

    VsixPublisher.exe deleteExtension -publisherName "TestVSIXPublisher" -extensionName "MyVsixExtension"
    
  2. Na exclusão bem-sucedida da extensão, você verá a seguinte mensagem de linha de comando:

    Removed 'MyVsixExtension' from the Marketplace.
    

Para remover a extensão do computador

  1. No Visual Studio, no menu Ferramentas , clique em Extensões e Atualizações.

  2. Selecione "MyVsixExtension" e, em seguida, clique em Desinstalar. A extensão será então agendada para desinstalação.

  3. Para concluir a desinstalação, feche todas as instâncias do Visual Studio.