无法找到可用于注册OmniSharp的MSBuild实例。

27

我发现了许多关于此问题的问答,但没有一个对我有用。我正在尝试编写c#代码,但Omnisharp自动完成不起作用,并且从Omnisharp日志中得到以下信息:

OmniSharp server started.
    Path: c:\Users\GeorgV.216\.vscode\extensions\ms-dotnettools.csharp-1.24.1\.omnisharp\1.38.3-beta.31\OmniSharp.exe
    PID: 11536

[info]: OmniSharp.Stdio.Host
        Starting OmniSharp on Windows 6.2.9200.0 (x64)
[info]: OmniSharp.Services.DotNetCliService
        Checking the 'DOTNET_ROOT' environment variable to find a .NET SDK
[info]: OmniSharp.Services.DotNetCliService
        Using the 'dotnet' on the PATH.
[info]: OmniSharp.Services.DotNetCliService
        DotNetPath set to dotnet
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 0 MSBuild instance(s)
Could not locate MSBuild instance to register with OmniSharp.

可能的解决方案是什么?


1
同样的问题出现在 Linux Ubuntu 21.10 上 --> OmniSharp 服务器使用 Mono 6.8.0 启动。信息:OmniSharp.MSBuild.Discovery.MSBuildLocator 找到了 0 个 MSBuild 实例,无法找到 MSBuild。这个问题一直工作正常,但今天突然出现了。我没有改变任何东西。 - Kunta Kinte
同样的问题在这里,这也是今天的消息。 https://serveanswer.com/questions/c-vscode-error-could-not-locate-msbuild-instance-to-register-with-omnisharp - Kunta Kinte
16个回答

27
截至2022年5月,Omnisharp不包括MSBuild。 可以通过安装“Visual Studio Build Tools”来添加MSBuild。该工具可在此页面底部找到。 在安装期间,请选择“.NET桌面构建工具”: enter image description here 更多信息请参见此问题

11
嗨,Unity用户!如果你在2022年5月之后遇到了IntelliSense问题,这是你需要的...(VS社区和Code) - ErTR
1
@ErTR 没错!我在尝试将 VS Code 配合 Unity 使用时遇到了这个问题,而这个答案为我解决了它。 - Moohasha
2
这个网站没有注明,但我认为这很重要:构建工具也适用于VS Code。 - Kyle Challis

11

对我起作用的解决方案是在setting.json文件中将"omnisharp.path"从"latest"更改为"",并删除C:\Users{username}.vscode\extensions\ms-dotnettools.csharp-1.24.1.omnisharp下的1.38.3-beta.31文件夹。


1
终于解决了这个问题。对我来说,需要 .NETFramework(开发人员包)v.4.7.1,否则我会收到另一个错误。要下载 .NETFramework(开发人员包)v.4.7.1,请单击链接并按下线安装程序。谢谢大家。 - Giorgos V

7
如果你正在使用VSCode,一个简单的解决方法是安装旧版本的C#扩展程序。扩展程序->卸载旁边的箭头->安装另一个版本->v1.24.1。这是一个临时的解决方案,因为你会被卡在旧版的C#扩展程序中,但它是一个快速简单的解决方案。

这对我有用 - 但我无法在 Visual Studio 代码中降级 - 必须卸载,然后从互联网下载 VSIX 文件,并在 IDE 中“从 vsix 安装”。 - Kibi

4

我也突然遇到了这个问题,将"omnisharp.useModernNet": true添加到settings.json中之后问题得到解决。


嗯...这对我来说也有效。虽然我在Unity 3D中,但此选项说它不支持Unity。但是暂时我可以为Unity编译。希望以后没有其他问题。谢谢。 - Kunta Kinte
现在我可以编译,但Unity的自动完成和上下文帮助都无法工作。 - Kunta Kinte
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community
使用基于Mono的开发(Unity),因此此解决方案对我无效。通过遵循所选答案并启用useGlobalMono,即“omnisharp.path”:“”和“omnisharp.useGlobalMono”:“always”,我能够使事情再次正常工作。 - Will Lacey

2
如果您正在使用VS Code,一个临时的解决方法是安装旧版本的C#扩展。

扩展 -> 安装另一个版本 -> v1.24.1

这将有所帮助,就像对我有帮助一样。


这对我也起作用了,尝试了许多不同的解决方案后。 - Sean2148

1

Omnisharp已经更新到.NET 6.0。旧版.NET Framework构建将不再附带MSBuild工具(如果您尚未安装它们),这就是您出现错误的原因。

通过在VSCode settings.json中设置以下内容来消除msbuild错误:

"omnisharp.path": ""

通过设置以下内容,升级到较新的OmniSharp .NET 6.0版本:

"omnisharp.useModernNet": true

我正在使用Unity,因此必须将useModernNet设置为false,并且将omnisharp.path设置为空字符串并不能解决这个问题。 - Marcos Pereira
@MarcosPereira Unity对Omnisharp的构建版本有什么影响?只要您安装了.NET 6 SDK,就可以运行现代构建。 - Mani Gandham

1

目前已经为我工作。可能的原因是(来自omnisharp github):“计划删除包含的Mono和MSBuild工具”。

在未来,OmniSharp的.NET Framework版本将不会附带Mono或MSBuild工具(请参见公告omnisharp-roslyn#2339)。为确保C#扩展在.NET SDK项目中仍可直接使用,我们将更改omnisharp.useModernNet的默认值为true。

但“omnisharp.useModernNet为true”无法与Unity 3d一起使用。

所以。

我从ubuntu中卸载了所有dotnets。 卸载mono。 重新安装dotnet,使用此链接:https://learn.microsoft.com/es-es/dotnet/core/install/linux-ubuntu#2110- 使用synaptics重新安装mono-complete。 并在VS设置中将omnisharp使用全局mono设置为“始终”。 现在对我有用。


很好的答案,现在可以工作了!在Arch上,可以安装mono-msbuild - garzj

0

对我来说运行

"omnisharp.enableEditorConfigSupport": true,
"omnisharp.path": "latest",
"omnisharp.projectLoadTimeout": 60,
"omnisharp.useGlobalMono": "always",
"omnisharp.useModernNet": true,

关于 settings.json 文件...


您使用这些设置的扩展版本是哪个? - MoralCode
您使用这些设置的扩展版本是哪个? - undefined

0

适用于各平台的快速解决方案(Windows、Linux、Mac)

  • 将 VS Code 更新模式设置为“手动”
  • 禁用 Windows 后台更新
  • 将 VS Code 版本降级至 2022 年 2 月版(版本 1.65)
  • 将 C# 扩展版本降级至 v1.24.4

#5253 (评论)


0
我的解决方案:

管理 设置 搜索 "omnisharp path"settings.json 中进行编辑 输入代码> 将 "latest" 替换为 ""


你的回答可以加入更多支持性信息来改进它。请编辑以添加进一步的细节,例如引用或文档,以便其他人可以确认你的答案是否正确。你可以在帮助中心找到更多有关如何撰写良好答案的信息。 - Community

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