本文介绍如何在 Visual Studio 中查找、安装和管理扩展包。 扩展 是在 Visual Studio 中运行的代码包,并提供新功能或改进的功能。 扩展可以是向 Visual Studio 添加功能的控件、示例、模板、工具或其他组件,例如,Live Share 或 GitHub Copilot。
有关创建 Visual Studio 扩展的信息,请参阅 Visual Studio SDK。 有关使用扩展的信息,请参阅 Visual Studio Marketplace 上的单个扩展页。 如需了解如何查找扩展,请参阅 Visual Studio 2022 中我最喜欢的扩展在哪儿?博客文章。
注意
若要详细了解当前处于预览状态的扩展性模型,请参阅 VisualStudio.Extensibility(预览版 3)博客文章中的“生成更好的扩展 ”。
使用扩展管理器
在 Visual Studio IDE 中,扩展管理器是用于查找、安装和管理 Visual Studio 扩展的工具。 若要打开扩展管理器,请选择 扩展>管理扩展。 或在搜索框中输入 扩展 ,然后选择“ 管理扩展”。
左窗格按 Visual Studio Marketplace 上可用的扩展(浏览)、已安装的扩展和具有可用更新的扩展进行分类。 漫游选项卡列出了你在任何计算机或 Visual Studio 实例上安装的所有 Visual Studio 扩展。 它旨在让你更轻松地找到喜欢的扩展。
选项卡具有用于筛选和排序扩展的按钮,以及一个齿轮按钮,用于转到 “工具>选项 ”屏幕。
可以使用筛选器按钮按类别筛选扩展。 已安装扩展的类别包括“已启用”、“已禁用”和“不兼容”。 在 17.14 及更高版本中,您还可以按“待处理”进行筛选,即按将在下次重启 Visual Studio 时应用更新的扩展进行筛选。
使用排序按钮按扩展名称、扩展作者或日期进行排序。
查找和安装扩展
可以从 Visual Studio Marketplace 或 Visual Studio 中的扩展管理器安装扩展。
在 Visual Studio 中安装扩展:
选择 扩展>,管理扩展。 找到要安装的扩展。 (如果知道扩展的名称或部分名称,可以在搜索框中搜索。
选择 安装。
如果尝试安装具有依赖项的扩展,安装程序将确定它们是否已安装。 如果未安装它们,扩展管理器会列出必须先安装的依赖项,然后才能安装扩展。
安装扩展而不使用扩展管理器
.vsix 文件中打包的扩展可能在 Visual Studio Marketplace 以外的位置可用。 扩展>扩展管理器 对话框无法检测这些文件,但可以通过双击该文件或选择文件,然后选择 Enter来安装 .vsix 文件。 如果遇到权限问题,请确保以管理员身份运行 Visual Studio。 之后,只需按照说明操作。 安装扩展后,可以使用扩展管理器来启用、禁用或卸载它。
注意
- Visual Studio Marketplace 包含基于 VSIX 的扩展和基于 MSI 的扩展。 扩展管理器不能启用或禁用基于 MSI 的扩展。
- 如果基于 MSI 的扩展包含 extension.vsixmanifest 文件,则扩展将显示在扩展管理器中。
卸载或禁用扩展
如果要停止使用扩展,可以禁用或卸载它。 禁用扩展会保持安装状态,但不加载。 找到扩展并选择 卸载 或 禁用。 重启 Visual Studio 以卸载禁用的扩展。
注意
可以禁用基于 VSIX 的扩展,但不能禁用通过 MSI 安装的扩展。 只能卸载 MSI 安装的扩展。
管理扩展
本部分提供有关管理用于组织的插件、自动插件更新和无响应通知的信息。
每用户扩展和管理扩展
大多数扩展是用户特定扩展,安装在 %LocalAppData%\Microsoft\VisualStudio\<Visual Studio 版本>\Extensions\ 文件夹中。 一些扩展是管理扩展,安装在 <Visual Studio 安装文件夹中,>\Common7\IDE\Extensions\ 文件夹中。
若要保护系统免受可能包含错误或恶意代码的扩展的影响,只能在使用普通用户权限运行 Visual Studio 时限制每用户扩展加载。 这会导致在使用提升的权限运行 Visual Studio 时禁用每用户扩展。
若要限制每用户扩展加载时间:
打开扩展选项页(工具>选项>环境>扩展)。
清除以管理员身份运行时加载每用户扩展复选框。
重启 Visual Studio。
自动插件更新
当 Visual Studio Marketplace 上提供新版本时,扩展会自动更新。 扩展的新版本会在后台被检测并安装。 下次打开 Visual Studio 时,新版本的扩展将运行。
如果要禁用自动更新,可以禁用所有扩展或仅针对特定扩展的功能。
若要禁用所有扩展的自动更新,请在 扩展> 对话框中选择“视图设置” 按钮。 在“选项”对话框中,选择环境,然后选择>扩展,取消选择自动安装更新。
若要禁用特定扩展的自动更新,请在扩展管理器右侧的扩展详细信息窗格中清除 自动更新此扩展 选项。
本部分的其余部分介绍 Visual Studio 2022 17.14 及更高版本中提供的更改。 通过这些更改,可以更轻松地查看扩展更新的发生情况,以及从扩展管理器或 工具>选项中管理自动更新设置。
每当打开“扩展管理器”窗口时,都会自动触发更新。 这可确保你一致地使用最新功能,并且不需要手动启动更新。
当更新可用于扩展时,会看到黄色通知信息栏:
此外,应用更新时会显示一条通知,提醒重启 Visual Studio,以便扩展生效。
可以在扩展管理器的扩展页上更改自动更新的设置。
“待处理”类别使你能够仅查看具有待处理更新的扩展。
自动更新设置
还可以在“工具选项”>中配置自动更新设置。
从自动更新中排除的“扩展”下的列表显示不会自动更新的扩展。 你可以使用它来确保在开发生命周期的关键阶段中使用的扩展的稳定性和一致性。
故障和无响应通知
如果Visual Studio怀疑某个扩展在上一个会话期间导致崩溃,它会通知你。 Visual Studio 崩溃时,它会存储异常堆栈。 下次 Visual Studio 启动时,它会检查堆栈,从叶子节点开始一直到基部。 如果 Visual Studio 确定框架属于已安装和已启用扩展的一部分的模块,则会显示通知。
如果 Visual Studio 怀疑扩展导致 UI 无响应,也会通知你。
看到其中一条通知时,可以忽略它或执行以下操作之一:
选择 禁用此扩展。 Visual Studio 禁用扩展,并告知是否需要重启系统才能使禁用操作生效。 可以在 扩展>管理扩展 对话框中重新启用扩展。
选择“从不再次显示此消息”。
- 如果通知涉及上一会话中的崩溃,Visual Studio 在发生与扩展关联的崩溃时不再显示通知。 当无响应可与该扩展相关联,或对于可与其他扩展相关联的故障或无响应,Visual Studio 仍会显示通知。
- 如果通知涉及无响应,则当扩展与无响应关联时,IDE 将不再显示通知。 Visual Studio 仍会显示与该扩展相关的故障通知,以及其他扩展与故障和无响应相关的通知。
选择“了解详细信息”。
选择通知末尾的 X 以消除通知。 如果扩展与崩溃或 UI 将来无响应相关联,则会显示一个新通知。
注意
UI 无响应通知或崩溃通知意味着当 UI 无响应或崩溃发生时,扩展的模块之一位于堆栈上。 这并不一定意味着扩展导致了问题。 可能是扩展调用的代码属于 Visual Studio,进而导致 UI 无响应或崩溃。 但是,如果导致 UI 无响应或崩溃的扩展对你来说并不重要,则通知可能仍然很有用。 在这种情况下,禁用扩展可避免 UI 无响应或将来崩溃。
市场保护
Visual Studio Marketplace for extensions 采用多种机制来保护你免受恶意扩展的影响:
恶意软件扫描:市场对发布的每个扩展包运行恶意软件扫描,以确保其安全。 扫描使用多个防病毒引擎,针对每个新扩展和每个扩展更新运行。 在扫描全部清除之前,该扩展不会在市场中发布供公众使用。
已验证的发布者:发布者可以通过证明域所有权来验证其身份(蓝色复选标记)。 它表明发布者对市场拥有经过验证的域名所有权。 它还表明,市场已经验证了该域的存在以及至少六个月的发布者在市场中的良好地位。
异常使用情况监视:市场监视扩展的下载和使用模式,以检测异常行为。
名称蹲点:市场阻止扩展作者窃取官方发布者的名称,例如Microsoft或 RedHat,以及 GitHub Copilot 等热门扩展。
阻止列表:如果报告并验证了恶意扩展,或者在扩展依赖项中找到漏洞,则会从市场中删除该扩展。
扩展签名验证:Visual Studio 市场在发布时对所有扩展进行签名。 安装扩展以验证扩展包的完整性和源时,Visual Studio 会检查此签名。
机密扫描:市场会自动扫描每个新发布的扩展以获取机密,例如 API 密钥或凭据(例如 Azure DevOps PAT 令牌)。 如果检测到任何机密,则会阻止发布以防止潜在的安全风险。
在 Visual Studio Marketplace 中的安全和信任博客文章中了解这些措施。
样品
安装联机示例时,解决方案存储在两个位置:
工作副本存储在创建项目时指定的位置。
单独的主副本存储在您的计算机上。
可以使用“ 扩展>管理扩展 ”对话框执行这些与示例相关的任务:
列出已安装示例的主控副本。
禁用或卸载示例的主控副本。
安装示例包,它们是与技术或功能相关的示例集合。
安装个别联机示例。
可以在发布源代码更改时查看已安装的示例更新通知。
当有更新通知时,更新已安装示例的主副本。