什么是Visual Studio Code实验?

时间:2019-03-24 09:17:22

标签: visual-studio-code vscode-settings

今天,我很惊讶地在VSCode的Workbench设置下找到一个“启用实验”选项,该选项默认为打开

该设置的描述是“获取从Microsoft联机服务运行的实验”,这对我来说似乎很模糊。我尝试使用Google搜索,但是没有找到明确的答案。

那么,有人知道这些“实验”是什么,并且关闭它可能更好吗?

2 个答案:

答案 0 :(得分:3)

这是使用开源软件是一个好主意的情况之一。因为Visual Studio代码的源代码发布在https://github.com/Microsoft/vscode中。我们可以尝试在哪里使用代码。

首先,我们可以尝试搜索字符串Enable Experiments。并查看该选项与哪个动作相关联。从那里,我看到文件src/vs/workbench/contrib/experiments/node/experimentService.ts正在使用它。具体来说,当尝试在第173行中加载实验

if (!product.experimentsUrl || this.configurationService.getValue('workbench.enableExperiments') === false) {

我们看到,该代码将检查“实验URL”。这可以在{Joe在评论中提到的product.json中看到。就我而言,文本如下所示。

"experimentsUrl": "https://az764295.vo.msecnd.net/experiments/vscode-experiments.json",

从那里,我们可以通过对该URL进行GET请求来查看JSON文件的内容。并且,它返回这个(至少在我发出请求时)

{
    "experiments": [
        {
            "id": "cdias.searchForAzure",
            "enabled": true,
            "action": {
                "type": "ExtensionSearchResults",
                "properties": {
                    "searchText": "azure",
                    "preferredResults": [
                        "ms-vscode.vscode-node-azure-pack",
                        "ms-azuretools.vscode-azureappservice",
                        "ms-azuretools.vscode-azurestorage",
                        "ms-azuretools.vscode-cosmosdb"
                    ]
                }
            }
        }
    ]
}

基于响应,我可以看到,如果我使用“ azure”关键字进行搜索,它将尝试更改搜索结果。我尝试过,搜索结果在结果搜索的顶部显示了4个项目。

enter image description here

关于是否禁用它。出于安全考虑(如果您不想让它改变使用vscode的体验),我认为您想禁用它。但是,我不认为微软会做一些疯狂的事情。

答案 1 :(得分:1)

我刚注意到这一点,对此也很好奇。在VS Code发行说明中进行的搜索在2018年7月找到了对它的引用。workbench.enableExperiments被列为VS Code的“离线模式”的设置之一:https://code.visualstudio.com/updates/v1_26#_offline-mode

脱机模式的说明表明此设置适用于“ A / B实验”:

  

为支持此离线模式,我们添加了新的设置以关闭功能,例如自动扩展程序更新检查, A / B实验的查询设置以及获取自动完成的在线数据。

正如其他人所提到的,VS Code的源代码显示此设置正在experimentService.ts中使用:https://github.com/microsoft/vscode/blob/93bb67d7efb669b4d1a7e40cd299bfefe5e85574/src/vs/workbench/contrib/experiments/common/experimentService.ts

如果您查看experimentService.ts的代码,则其获取的内容似乎与扩展建议,有关新功能的通知以及类似内容有关。这样看来,实验服务似乎是用于获取数据以对用户进行功能和扩展建议的A / B测试。