计算机扩展命令,使用命令行发布扩展 – Visual Studio (Windows) | Microsoft Docs

  • Post author:
  • Post category:其他


演练:通过命令行发布 Visual Studio 扩展

07/12/2018

本文内容

本演练演示如何使用命令行将 Visual Studio 扩展发布到 Visual Studio Marketplace。 将扩展添加到 Marketplace 后,开发人员可以使用 ” 扩展和更新 ” 对话框浏览新的和已更新的扩展。

VsixPublisher.exe 是将 Visual Studio 扩展发布到 Marketplace 的命令行工具。 它可从 $ {VSInstallDir} \VSSDK\VisualStudioIntegration\Tools\Bin\VsixPublisher.exe 访问。 此工具上可用的命令包括: 发布、 createPublisher、 deletePublisher、 deleteExtension、 login、 注销。

命令

发布

将扩展发布到 Marketplace。 扩展可以是 vsix、exe/msi 文件或链接。 如果已存在具有相同版本的扩展,它将覆盖该扩展。 如果扩展不存在,则将创建一个新扩展。

命令选项

说明

负载 (必需)

要发布的有效负载的路径或用作 “详细信息 URL” 的链接。

publishManifest (必需)

要使用的发布清单文件的路径。

ignoreWarnings

发布扩展时要忽略的警告列表。 发布扩展时,这些警告显示为命令行消息。 (例如 “VSIXValidatorWarning01,VSIXValidatorWarning02” )

personalAccessToken

用于对发布服务器进行身份验证 (PAT) 的个人访问令牌。 如果未提供,则将从已登录用户获取 PAT。

VsixPublisher.exe publish -payload “{path to vsix}” -publishManifest “{path to vs-publish.json}” -ignoreWarnings “VSIXValidatorWarning01,VSIXValidatorWarning02”

createPublisher

在 Marketplace 上创建发布者。 还会将发布服务器记录到计算机中,以便将来执行操作 (例如,删除/发布扩展) 。

命令选项

说明

displayName (必需)

发布服务器的显示名称。

publisherName (必需)

发布服务器的名称 (例如,标识符) 。

personalAccessToken (必需)

用于对发布服务器进行身份验证的个人访问令牌。

shortDescription

发布服务器的简短说明 (不是) 的文件。

longDescription

发布服务器的详细说明 (不是文件) 。

VsixPublisher.exe createPublisher -publisherName “{Publisher Name}” -displayName “{Publisher Display Name}” -personalAccessToken “{Personal Access Token}”

deletePublisher

删除 Marketplace 上的发布服务器。

命令选项

说明

publisherName (必需)

发布服务器的名称 (例如,标识符) 。

personalAccessToken (必需)

用于对发布服务器进行身份验证的个人访问令牌。

VsixPublisher.exe deletePublisher -publisherName “{Publisher Name}” -personalAccessToken “{Personal Access Token}”

deleteExtension

从 Marketplace 中删除扩展。

命令选项

说明

extensionName (必需)

要删除的扩展的名称。

publisherName (必需)

发布服务器的名称 (例如,标识符) 。

personalAccessToken

用于对发布服务器进行身份验证的个人访问令牌。 如果未提供,则将从已登录用户获取 pat。

VsixPublisher.exe deleteExtension -extensionName “{Extension Name}” -publisherName “{Publisher Name}”

login

将发布服务器记录到计算机中。

命令选项

说明

需要 personalAccessToken (

用于对发布服务器进行身份验证的个人访问令牌。

publisherName (必需)

发布服务器的名称 (例如,标识符) 。

overwrite

指定应使用新的个人访问令牌覆盖任何现有发布服务器。

VsixPublisher.exe login -personalAccessToken “{Personal Access Token}” -publisherName “{Publisher Name}”

logout

将发布服务器记录在计算机之外。

命令选项

说明

publisherName (必需)

发布服务器的名称 (例如,标识符) 。

ignoreMissingPublisher

如果指定的发布服务器尚未登录,则指定该工具不会出错。

VsixPublisher.exe logout -publisherName “{Publisher Name}”

publishManifest 文件

” 发布 ” 命令使用 publishManifest 文件。 它表示 Marketplace 需要了解的有关扩展的所有元数据。 如果要上传的扩展来自 VSIX 扩展,则 “identity” 属性只能设置为 “internalName”。 这是因为可以从 source.extension.vsixmanifest 文件生成其余的 “标识” 属性。 如果扩展是 msi/exe 或链接扩展,则用户必须在 “标识” 属性中提供必填字段。 清单的其余部分包含特定于 Marketplace (的信息,例如,类别、是否启用了 Q&,等等 ) 。

VSIX 扩展 publishManifest 文件示例:

{

“$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”

}

资产文件

可以提供资产文件,以便在自述文件中嵌入图像等。 例如,如果扩展具有以下 “概述” 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

}

发布演练

先决条件

要按照本演练的步骤操作,必须安装 Visual Studio SDK。 有关详细信息,请参阅 安装 Visual STUDIO SDK。

创建 Visual Studio 扩展

在这种情况下,我们将使用默认的 VSPackage 扩展,但相同的步骤对每种类型的扩展都有效。

在 c # 中创建一个名为 “TestPublish” 的 VSPackage,其中包含一个菜单命令。 有关详细信息,请参阅 创建第一个扩展: Hello World。

打包扩展

将扩展 source.extension.vsixmanifest 更新为有关产品名称、作者和版本的正确信息。

74ca833a883974fb3a566788af3fd9c8.png

在 发布 模式下构建扩展。 现在,你的扩展将打包为 \bin\Release 文件夹中的一个 VSIX。

可以双击 VSIX 来验证安装。

测试扩展

在分发扩展之前,请生成并测试该扩展,以确保它已正确安装在 Visual Studio 的实验实例中。

在 Visual Studio 中,启动调试。 打开 Visual Studio 的实验实例。

在实验实例中,请单击 ” 工具 ” 菜单,然后单击 ” 扩展和更新 …”。TestPublish 扩展应显示在中心窗格中并启用。

在 ” 工具 ” 菜单上,确保看到 “测试” 命令。

通过命令行将扩展发布到 Marketplace

请确保已生成扩展的发行版,并且该版本是最新版本。

请确保已创建 publishmanifest.js和 overview.md 文件。

打开命令行,导航到 $ {VSInstallDir} \VSSDK\VisualStudioIntegration\Tools\Bin\ 目录。

若要创建新的发布服务器,请使用以下命令:

VsixPublisher.exe createPublisher -publisherName “TestVSIXPublisher” -displayName “Test VSIX Publisher” -personalAccessToken “{Personal Access Token that is used to authenticate the publisher. If not provided, the pat is acquired from the logged-in users.}”

成功创建发布服务器后,会显示以下命令行消息:

Added ‘Test VSIX Publisher’ as a publisher on the Marketplace.

若要发布新扩展,请使用以下命令:

VsixPublisher.exe publish -payload “{Path to vsix file}” -publishManifest “{path to publishManifest file}”

成功创建发布服务器后,会显示以下命令行消息:

Uploaded ‘MyVsixExtension’ to the 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 的所有实例。