如何在Visual Studio Code中让Omnisharp扩展正常工作

5
在Visual Studio Code中,我尝试安装Omnisharp扩展程序,以便获得格式化(以及其他功能)。
以下是C#日志: 正在安装C#依赖项... 平台:win32,x86_64
正在下载软件包“OmniSharp for Windows (.NET 4.6 / x64)” 从 'https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-win-x64-1.32.8.zip' 重试。在阶段失败:downloadAndInstallPackages 错误:连接超时93.184.215.201:443
你也可以通过Omnisharp日志错误来判断该扩展未安装: Starting OmniSharp server at 1/9/2019, 4:17:59 PM Target: c:\Users[myUserId]\source\project-folder OmniSharp server started. Path: C:\Users[myUserId].vscode\extensions\ms-vscode.csharp-1.17.1.omnisharp\1.32.8\OmniSharp.exe PID: 15188
系统找不到指定的路径。 [ERROR] Error: OmniSharp server load timed out. Use the 'omnisharp.projectLoadTimeout' setting to override the default delay (one minute).
看起来版本1.32.8不可用,但https://omnisharpdownload.blob.core.windows.net/ext/omnisharp-win-x64-1.30.1.zip是可用的。 我下载了软件包,提取了文件,并尝试将文件夹放在预期位置:C:\Users[myUserId].vscode\extensions\ms-vscode.csharp-1.17.1.omnisharp\1.30.1\OmniSharp.exe -- 但Windows不允许以点开头的文件夹名在此位置。我认为我已经找到了解决方法,但实际上并没有。

更改Windows资源管理器设置以显示隐藏文件夹,然后您就可以轻松打开“C:\ Users \ [myUserId] \ .vscode \ extensions \”来操作文件夹。 - Lex Li
你还记得你是怎么解决这个问题的吗?我在海外网络连接很差,dotnet下载器总是卡住。所以我在云虚拟机上下载了相同的omnisharp .zip文件,并使用btsync将其同步到我的电脑上。现在我不知道该如何处理这个.zip文件...它没有.vsix文件... - stuzor
4个回答

7

我之前也遇到了这个问题,所以在settings.json中设置了代理和其他内容。但是奇怪的是,在新的VS Code中,我仍然遇到了同样的问题。 最后,当我清空settings.json文件(删除所有设置)后,VS Code可以正常工作了。 它会自动下载C#和其他扩展程序。 因此,如果您之前为旧版本的VS Code设置了某些设置,则需要将它们删除(注释掉)以检查是否会导致问题。 [如果您没有代理,但是如果有人有代理,则需要为.npmrc和cmd上的环境变量设置代理,因为下载文件需要互联网]


2
本文末尾有一节关于安装下载的vsix文件扩展的部分。它还提到了您所描述的错误以及可能与代理有关。这是一篇有些长的文章...但我希望这会有所帮助。 https://code.visualstudio.com/docs/editor/extension-gallery “我可以直接从市场下载扩展吗? 一些用户喜欢从市场仅下载一次扩展,然后从本地共享多次安装。当存在连接问题或者您的开发团队想要使用一组固定的扩展时,这很有用。
要下载扩展,请导航到市场上特定扩展的详细信息页面。在该页面上,资源部分右侧有一个“下载扩展”链接。
下载后,您可以通过“扩展”视图命令下拉菜单中的“从VSIX安装”命令安装扩展。”

问题很可能是代理的原因,但在我的公司中无法更改代理设置。至于下载,我只能看到一个下载源代码的链接。 - krazyk4tlady
@krazyk4tlady - 这是我做的 - 我去了https://github.com/OmniSharp/omnisharp-vscode/releases并下载了名为csharp-1.18.0-beta4.vsix的文件。那里还有其他版本。我打开了VS Code,然后进入View -> Terminal,并在提示符处添加了这样的命令:code --install-extension "C:\Users[我的用户ID]\Downloads\csharp-1.18.0-beta4.vsix"。 - Eric D
但是我没有代理阻挡……请让我知道发生了什么。 - Eric D

2
我成功的方法如下:
  1. 按下crtl + shift + P,然后选择“首选项”>“打开设置”
  2. 如果有以下这些行,请将它们注释掉:

// "http.proxySupport": "on", // "http.proxyAuthorization": null,

我这样做后,扩展程序就能够使用代理设置,扩展程序也能够下载和正常工作了!


1
安装应该更容易了,因为 VSCode 1.61(2021 年 9 月)支持平台特定的扩展。正如 OmniSharp/omnisharp-vscode issue 4775 所提到的那样:
“VS Code 现在支持平台特定的扩展。这对于 C# 很有用,因为目前您需要在激活后下载平台二进制文件。”
发布扩展 / 平台特定扩展 中所述:
扩展程序可以为每个平台(Windows、Linux、macOS)发布不同的VSIX。
如果您的扩展程序具有特定于平台的库或依赖项,则可以控制包含在平台软件包中的确切二进制文件,这非常有用。
常见的用例是使用本机节点模块。
安装特定于平台的扩展时,VS Code(从版本1.61.0开始)会查找与当前平台匹配的扩展程序包。
如果没有为该平台发布任何包,则该扩展将显示为已禁用,并且无法安装。
因此,您需要为每个支持的平台发布一个软件包。为了满足此要求,我们提供工具来帮助使这个潜在的重复过程更容易。
接下来是 2018 microsoft/vscode issue 23251

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接