Пошаговое руководство. Публикация расширения Visual Studio с помощью командной строки

В этом пошаговом руководстве показано, как опубликовать расширение Visual Studio в Visual Studio Marketplace с помощью командной строки. При добавлении расширения в Marketplace разработчики могут использовать расширения и диалоговое окно Обновления для поиска новых и обновленных расширений.

VsixPublisher.exe — это средство командной строки для публикации расширений Visual Studio в Marketplace. К нему можно получить доступ из ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\VsixPublisher.exe. Команды, доступные в этом средстве: публикация, удалениеPublisher, deleteExtension, имя входа, выход.

Команды

публикация

Публикует расширение в Marketplace. Расширение может быть vsix, exe/msi-файл или ссылка. Если расширение уже существует с той же версией, оно перезаписывает расширение. Если расширение еще не существует, он создаст новое расширение.

Параметры команд Description
полезные данные (обязательно) Либо путь к полезным данным для публикации, либо ссылка, используемая в качестве URL-адреса дополнительных сведений.
publishManifest (обязательно) Путь к используемому файлу манифеста публикации.
ignoreWarnings Список предупреждений, которые следует игнорировать при публикации расширения. Эти предупреждения отображаются как сообщения командной строки при публикации расширения. (например, VSIXValidatorWarning01, VSIXValidatorWarning02)
personalAccessToken Личный маркер доступа (PAT), используемый для проверки подлинности издателя. Если он не указан, ПАТ приобретается у пользователей, вошедшего в систему.
VsixPublisher.exe publish -payload "{path to vsix}" -publishManifest "{path to vs-publish.json}" -ignoreWarnings "VSIXValidatorWarning01,VSIXValidatorWarning02"

deletePublisher

Удаляет издателя в Marketplace.

Параметры команд Description
publisherName (обязательно) Имя издателя (например, идентификатор).
personalAccessToken (обязательно) Личный маркер доступа, используемый для проверки подлинности издателя.
VsixPublisher.exe deletePublisher -publisherName "{Publisher Name}" -personalAccessToken "{Personal Access Token}"

deleteExtension

Удаляет расширение из Marketplace.

Параметры команд Description
extensionName (обязательно) Имя удаления расширения.
publisherName (обязательно) Имя издателя (например, идентификатор).
personalAccessToken Личный маркер доступа, используемый для проверки подлинности издателя. Если он не указан, пата приобретается у пользователей, вошедшего в систему.
VsixPublisher.exe deleteExtension -extensionName "{Extension Name}" -publisherName "{Publisher Name}"

Вход

Регистрирует издателя на компьютере.

Параметры команд Description
personalAccessToken (требуется) Личный маркер доступа, используемый для проверки подлинности издателя.
publisherName (обязательно) Имя издателя (например, идентификатор).
overwrite Указывает, что любой существующий издатель должен быть перезаписан новым личным маркером доступа.
VsixPublisher.exe login -personalAccessToken "{Personal Access Token}" -publisherName "{Publisher Name}"

Выход

Записывает издателя из компьютера.

Параметры команд Description
publisherName (обязательно) Имя издателя (например, идентификатор).
ignoreMissingPublisher Указывает, что средство не должно ошибиться, если указанный издатель еще не вошел в систему.
VsixPublisher.exe logout -publisherName "{Publisher Name}"

createPublisher

Внимание

Эта команда больше не доступна. Вы можете создать издателя, перейдя в Visual Studio Marketplace.

файл publishManifest

Файл publishManifest используется командой публикации. Он представляет все метаданные о расширении, которое необходимо знать в Marketplace. Если передаваемое расширение выполняется из расширения VSIX, свойство identity должно иметь только набор internalName. Это связано с тем, что остальные свойства identity можно создать из файла vsixmanifest. Если расширение является msi/exe или расширением ссылки, пользователь должен указать необходимые поля в свойстве identity. Остальная часть манифеста содержит сведения, относящиеся к Marketplace (например, категории, включена ли функция Q&A и т. д.).

Пример файла publishManifest расширения 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.
}

Пример файла MSI/EXE или 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"
}

Файлы ресурсов

Файлы ресурсов можно предоставить для внедрения таких вещей, как изображения в файл readme. Например, если расширение содержит следующий документ Markdown:

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

Чтобы разрешить "images/testlogo.png" в предыдущем примере, пользователь может предоставить "assetFiles" в манифесте публикации, как показано ниже:

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

Пошаговое руководство по публикации

Необходимые компоненты

Для выполнения этого пошагового руководства необходимо установить пакет SDK для Visual Studio. Дополнительные сведения: Установка пакета SDK для Visual Studio.

Создание расширения Visual Studio

В этом случае мы будем использовать расширение VSPackage по умолчанию, но те же действия допустимы для каждого типа расширения.

  1. Создайте VSPackage в C# с именем TestPublish с командой меню. Дополнительные сведения см. в статье "Создание первого расширения: Hello World".

Упаковка расширения

  1. Обновите расширение vsixmanifest с правильными сведениями о имени продукта, авторе и версии.

    update extension vsixmanifest

  2. Создайте расширение в режиме выпуска . Теперь расширение будет упаковано в виде VSIX в папке \bin\Release.

  3. Чтобы проверить установку, дважды щелкните VSIX.

Тестирование расширения

Перед распространением расширения, сборкой и проверкой его, чтобы убедиться, что он установлен правильно в экспериментальном экземпляре Visual Studio.

  1. В Visual Studio запустите отладку. чтобы открыть экспериментальный экземпляр Visual Studio.

  2. В экспериментальном экземпляре перейдите в меню "Сервис" и щелкните "Расширения" и Обновления.... Расширение TestPublish должно отображаться в центральной области и быть включено.

  3. В меню "Сервис" убедитесь, что отображается тестовая команда.

Публикация расширения в Marketplace с помощью командной строки

  1. Убедитесь, что вы создали версию выпуска расширения и что она обновлена.

  2. Убедитесь, что вы создали файлы publishmanifest.json и overview.md.

  3. Откройте командную строку и перейдите к каталогу ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\.

  4. Чтобы опубликовать новое расширение, используйте следующую команду:

    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. При успешной публикации расширения отобразится следующее сообщение командной строки:

    Uploaded 'MyVsixExtension' to the Marketplace.
    
  6. Вы можете проверить новое расширение, опубликованное, перейдя в Visual Studio Marketplace

Установка расширения из Visual Studio Marketplace

После публикации расширения установите и протестируйте его в Visual Studio.

  1. В Visual Studio в меню "Сервис" щелкните "Расширения" и Обновления....

  2. Щелкните "Онлайн" и найдите TestPublish.

  3. Щелкните элемент Загрузить. Затем расширение будет запланировано на установку.

  4. Закройте все экземпляры Visual Studio для завершения установки.

Удаление расширения

Расширение можно удалить из Visual Studio Marketplace и с компьютера.

Удаление расширения из Marketplace с помощью командной строки

  1. Если вы хотите удалить расширение, используйте следующую команду:

    VsixPublisher.exe deleteExtension -publisherName "TestVSIXPublisher" -extensionName "MyVsixExtension"
    
  2. При успешном удалении расширения отобразится следующее сообщение командной строки:

    Removed 'MyVsixExtension' from the Marketplace.
    

Удаление расширения с компьютера

  1. Находясь в Visual Studio, в меню Сервис щелкните Расширения и обновления.

  2. Выберите "MyVsixExtension" и нажмите кнопку "Удалить". Затем расширение будет запланировано на удаление.

  3. Чтобы завершить удаление, закройте все экземпляры Visual Studio.