尝试以扩展 VS Code 中的代理模式!

企业支持

Visual Studio Code 可以作为各种规模企业团队的开发工具。作为 IT 管理员,您可以配置 VS Code,以在整个组织中实现一致性和兼容性。

网络:常用主机名

VS Code 中的一些功能需要网络通信才能正常工作,例如自动更新机制、查询和安装扩展以及遥测。为了让这些功能在代理环境中正常工作,您必须正确配置产品。

有关所需域名,请参阅网络常用主机名列表

配置允许的扩展

注意

从 VS Code 1.96 版本开始支持允许的扩展。

VS Code 中 extensions.allowed 这个应用程序级设置使您能够控制可以在用户计算机上安装哪些扩展。如果未配置该设置,则允许所有扩展。如果配置了该设置,则所有未列出的扩展都将被阻止安装。如果您阻止了已安装的扩展或版本,该扩展将被禁用。

要为您的组织集中管理允许的扩展,请使用您的设备管理解决方案配置 AllowedExtensions 策略。此策略将覆盖用户设备上的 extensions.allowed 设置。此策略的值是一个 JSON 字符串,其中包含允许的扩展。

{
  "github": true,
  "microsoft": true
}

以下是管理员如何使用本地组策略编辑器在本地配置 AllowedExtensions 策略的方法:

Configuring AllowedExtensions from the Local Group Policy Editor

重要

如果策略值中存在语法错误,extensions.allowed 设置将不会被应用。您可以在 VS Code 中检查窗口日志以查找错误(按 ⇧⌘P (Windows、Linux 为 Ctrl+Shift+P) 并输入显示窗口日志 (Show Window Log))。

允许的扩展设置值

extensions.allowed 设置包含一个扩展选择器列表,用于确定允许或阻止哪些扩展。您可以指定以下类型的扩展选择器:

  • 允许或阻止来自某个发布者的所有扩展
  • 允许或阻止特定的扩展
  • 允许特定的扩展版本
  • 允许特定的扩展版本和平台
  • 仅允许扩展的稳定版本
  • 仅允许来自某个发布者的稳定扩展版本

以下 JSON 片段显示了不同 extensions.allowed 设置值的示例:

"extensions.allowed": {
    // Allow all extensions from the 'microsoft' publisher. If the key does not have a '.', it means it is a publisher ID.
    "microsoft": true,

    // Allow all extensions from the 'github' publisher
    "github": true,

    // Allow prettier extension
    "esbenp.prettier-vscode": true,

    // Do not allow container tools extension
    "ms-azuretools.vscode-containers": false,

    // Allow only version 3.0.0 of the eslint extension
    "dbaeumer.vscode-eslint": ["3.0.0"],

    // Allow multiple versions of the figma extension
    "figma.figma-vscode-extension": ["3.0.0", "4.2.3", "4.1.2"],

    // Allow version 5.0.0 of the rust extension on Windows and macOS
    "rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"],

    // Allow only stable versions of the GitHub Pull Requests extension
    "github.vscode-pull-request-github": "stable",

    // Allow only stable versions from redhat publisher
    "redhat": "stable",
}

通过发布者 ID 指定发布者。如果键不包含句点 (.),则它被视为发布者 ID。如果键包含句点,则它被视为扩展 ID。目前不支持使用通配符。

提示

您可以使用 microsoft 作为发布者 ID 来指代由 Microsoft 发布的所有扩展,即使它们可能有不同的发布者 ID。

不支持版本范围。如果您想允许多个版本的扩展,则必须单独指定每个版本。要按平台进一步限制版本,请使用 @ 符号指定平台。例如:"rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"]

选择器越具体,优先级越高。例如,"microsoft": true"microsoft.cplusplus": false 允许所有 Microsoft 扩展,但 C++ 扩展除外。

不支持重复的键值。例如,同时包含 "microsoft": true"microsoft": false 会导致策略无效。

如果您想了解有关 VS Code 中扩展的更多信息,请参阅扩展文档

配置自动更新

VS Code 的 update.mode 设置控制着 VS Code 在发布新版本时是否自动更新。更新是从 Microsoft 的在线服务获取的。

该设置有以下选项:

  • none - 禁用更新
  • manual - 禁用自动检查更新,但用户可以手动检查更新
  • start - 仅在 VS Code 启动时检查更新,禁用自动检查更新
  • default - 启用自动检查更新,并定期在后台运行

要为您的组织集中管理自动更新,请使用您的设备管理解决方案配置 UpdateMode 策略。此策略将覆盖用户设备上的 update.mode 设置。此策略的值是一个包含更新模式的字符串。

配置遥测级别

VS Code 的 telemetry.telemetryLevel 设置控制着 VS Code 的遥测、第一方扩展遥测以及参与的第三方扩展遥测。某些第三方扩展可能不遵循此设置。请阅读有关我们收集的数据的更多信息。

  • all - 发送使用数据、错误和崩溃报告
  • error - 发送常规错误遥测和崩溃报告
  • crash - 发送操作系统级别的崩溃报告
  • off - 禁用所有产品遥测

要为您的组织集中管理遥测,请使用您的设备管理解决方案配置 TelemetryLevel 策略。此策略将覆盖用户设备上的 telemetry.telemetryLevel 设置。此策略的值是一个包含遥测级别的字符串。

集中管理 VS Code 设置

您可以通过设备管理解决方案集中管理 VS Code 的特定功能,以确保它满足您组织的需求。当您指定 VS Code 策略时,其值将覆盖用户设备上相应的 VS Code 设置。

Settings editor showing that the 'Extensions: Allowed' setting is managed by the organization.

VS Code 目前提供用于控制以下管理员控制功能的策略:

策略 描述 VS Code 设置 可用版本
AllowedExtensions 控制可以安装哪些扩展。 extensions.allowed 1.96
UpdateMode 控制 VS Code 在新版本发布时是否自动更新。 update.mode 1.67
TelemetryLevel 控制遥测数据的级别。 telemetry.telemetryLevel 1.99
EnableFeedback 控制反馈机制,如问题报告器和调查问卷。 telemetry.feedback.enabled 1.99
ChatAgentMode 控制是否在聊天中启用代理模式 chat.agent.enabled 1.99
ChatAgentExtensionTools 启用使用由第三方扩展贡献的工具。 chat.extensionTools.enabled 1.99
ChatPromptFiles 在聊天中启用可重用的提示和指令文件 chat.promptFiles 1.99
ChatMCP 启用与模型上下文协议 (MCP) 服务器的集成。 chat.mcp.enabled 1.99
ChatToolsAutoApprove 为代理模式工具启用自动批准。 chat.tools.autoApprove 1.99

Windows 上的组策略

VS Code 支持基于 Windows 注册表的组策略。从 VS Code 1.69 版本开始,每个版本都附带一个 policies 目录,其中包含可以添加到以下路径的 ADMX 模板文件:C:\Windows\PolicyDefinitions。请确保同时将相应的 adml 文件复制到 C:\Windows\PolicyDefinitions\<your-locale> 目录。

策略定义安装后,管理员可以使用本地组策略编辑器来管理策略值。

Microsoft Intune 这样的产品可以用于大规模集中管理设备策略。

策略可以在计算机级别和用户级别设置。如果两者都设置了,计算机级别将优先。当策略值被设置后,该值将覆盖在任何级别(默认、用户、工作区等)配置的 VS Code 设置值。

macOS 上的配置描述文件

配置描述文件管理 macOS 设备上的设置。描述文件是一个 XML 文件,包含与可用策略相对应的键/值对。这些描述文件可以使用移动设备管理 (MDM) 解决方案部署,或手动安装。

从 VS Code 1.99 版本开始,每个版本都附带一个示例 .mobileconfig 文件。此文件位于 .app 包内的 Contents/Resources/app/policies 目录下。使用文本编辑器手动编辑或删除策略,以符合您组织的要求。

提示

要查看 .app 包的内容,请在访达中右键单击应用程序(例如,/Applications/Visual Studio Code.app)并选择显示包内容

字符串策略

以下示例演示了 AllowedExtensions 策略的配置。在示例文件中,策略值初始为空(不允许任何扩展)。

<key>AllowedExtensions</key>
<string></string>

<string> 标签之间添加定义您策略的适当 JSON 字符串

<key>AllowedExtensions</key>
<string>{"microsoft": true, "github": true}</string>

其他策略,如 UpdateMode,接受来自一组预定义值的字符串。

<key>UpdateMode</key>
<string>start</string>

布尔策略

布尔策略值用 <true/><false/> 表示。

<key>EnableFeedback</key>
<true/>

要省略某个策略,请从 .mobileconfig 文件中删除其键/值对。例如,要不强制执行更新模式策略,请删除 UpdateMode 键及其后的 <string></string> 标签。

重要

提供的 .mobileconfig 文件会初始化该版本 VS Code 中所有可用的策略。请删除任何不需要的策略。

如果您不编辑或从示例 .mobileconfig 中删除某个策略,该策略将以其默认(限制性)策略值被强制执行。

通过在访达中双击 .mobileconfig 描述文件,然后在系统偏好设置的通用 > 设备管理中启用它来手动安装配置描述文件。从系统偏好设置中删除该描述文件将从 VS Code 中移除这些策略。

有关配置描述文件的更多信息,请参阅 Apple 的文档

其他策略

我们的目标是推广现有的 VS Code 设置为策略,并紧密遵循现有设置,以保持命名和行为的一致性。如果需要制定更多策略,请在 VS Code GitHub 仓库中提交一个问题。团队将确定是否已有相应的设置来控制该行为,或者是否需要创建一个新设置来控制所需行为。

设置带有预装扩展的 VS Code

您可以设置带有预装扩展集(引导)的 VS Code。在准备机器镜像、虚拟机或云工作站时,如果 VS Code 已预装并且特定扩展可立即供用户使用,此功能非常有用。

注意

目前仅在 Windows 上支持预装扩展。

按照以下步骤引导扩展:

  1. 在 VS Code 安装目录中创建一个 bootstrap\extensions 文件夹。

  2. 下载您想要预装的扩展的 VSIX 文件,并将它们放入 bootstrap\extensions 文件夹中。

  3. 当用户首次启动 VS Code 时,bootstrap\extensions 文件夹中的所有扩展将在后台静默安装。

用户仍然可以卸载预装的扩展。卸载扩展后重启 VS Code 不会重新安装该扩展。

常见问题

VS Code 是否支持 Linux 上的配置描述文件?

目前没有支持 Linux 的计划。如果您对 Linux 上的配置描述文件感兴趣,请在 VS Code GitHub 仓库中提交一个问题,并分享您的应用场景详情。