Пошаговое руководство. Публикация расширения 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 по умолчанию, но те же действия допустимы для каждого типа расширения.
- Создайте VSPackage в C# с именем TestPublish с командой меню. Дополнительные сведения см. в статье "Создание первого расширения: Hello World".
Упаковка расширения
Обновите расширение vsixmanifest с правильными сведениями о имени продукта, авторе и версии.
Создайте расширение в режиме выпуска . Теперь расширение будет упаковано в виде VSIX в папке \bin\Release.
Чтобы проверить установку, дважды щелкните VSIX.
Тестирование расширения
Перед распространением расширения, сборкой и проверкой его, чтобы убедиться, что он установлен правильно в экспериментальном экземпляре Visual Studio.
В Visual Studio запустите отладку. чтобы открыть экспериментальный экземпляр Visual Studio.
В экспериментальном экземпляре перейдите в меню "Сервис" и щелкните "Расширения" и Обновления.... Расширение TestPublish должно отображаться в центральной области и быть включено.
В меню "Сервис" убедитесь, что отображается тестовая команда.
Публикация расширения в Marketplace с помощью командной строки
Убедитесь, что вы создали версию выпуска расширения и что она обновлена.
Убедитесь, что вы создали файлы publishmanifest.json и overview.md.
Откройте командную строку и перейдите к каталогу ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\.
Чтобы опубликовать новое расширение, используйте следующую команду:
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.}"
При успешной публикации расширения отобразится следующее сообщение командной строки:
Uploaded 'MyVsixExtension' to the Marketplace.
Вы можете проверить новое расширение, опубликованное, перейдя в Visual Studio Marketplace
Установка расширения из Visual Studio Marketplace
После публикации расширения установите и протестируйте его в Visual Studio.
В Visual Studio в меню "Сервис" щелкните "Расширения" и Обновления....
Щелкните "Онлайн" и найдите TestPublish.
Щелкните элемент Загрузить. Затем расширение будет запланировано на установку.
Закройте все экземпляры Visual Studio для завершения установки.
Удаление расширения
Расширение можно удалить из Visual Studio Marketplace и с компьютера.
Удаление расширения из Marketplace с помощью командной строки
Если вы хотите удалить расширение, используйте следующую команду:
VsixPublisher.exe deleteExtension -publisherName "TestVSIXPublisher" -extensionName "MyVsixExtension"
При успешном удалении расширения отобразится следующее сообщение командной строки:
Removed 'MyVsixExtension' from the Marketplace.
Удаление расширения с компьютера
Находясь в Visual Studio, в меню Сервис щелкните Расширения и обновления.
Выберите "MyVsixExtension" и нажмите кнопку "Удалить". Затем расширение будет запланировано на удаление.
Чтобы завершить удаление, закройте все экземпляры Visual Studio.