无法找到 MSBuild 实例以向 OmniSharp 注册

Could not locate MSBuild instance to register with OmniSharp

我发现了很多关于此的问题,但没有一个对我有帮助。我正在尝试编写 C# 代码,但 omnisharp 自动完成功能不起作用,我从 Omnisharp 日志中得到:

OmniSharp server started.
    Path: c:\Users\GeorgV.216\.vscode\extensions\ms-dotnettools.csharp-1.24.1\.omnisharp.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.

可能的解决方案是什么?

突然也遇到了这个问题,添加“omnisharp.useModernNet”:对 settings.json 为我修复了它。

现在为我工作。也许原因是(来自 omnisharp github): “计划删除包含的 Mono 和 MSBuild 工具

在未来,OmniSharp 的 .NET Framework 构建将不会随 Mono 或 MSBuild 工具一起提供(参见公告 omnisharp-roslyn#2339)。为确保 C# 扩展在 .NET SDK 项目中开箱即用,我们将 omnisharp.useModernNet 的默认值更改为 true。"

但是“omnisharp.useModernNet to true”不适用于 Unity 3d。

所以。

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

对我有用的解决方案是将 setting.json 文件中的“omnisharp.path”:从“最新”更改为“”,并删除 1.38.3-beta.31 文件夹C:\Users{用户名}.vscode\extensions\ms-dotnettools.csharp-1.24.1.omnisharp

对我有用的解决方案:

Manage Settings search for "omnisharp path" edit in settings.json enter code here> replace "latest" with ""

对我来说

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

在 settings.json 文件上....

Omnisharp 已经 updated to .NET 6.0. The older .NET Framework builds will no longer ship with MSBuild tools(您还没有安装它们)所以这就是您出错的原因。

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

"omnisharp.path": ""

通过以下设置升级到更新的 .NET 6.0 版本的 OmniSharp:

"omnisharp.useModernNet": true

截至 2022 年 5 月,Omnisharp 不包括 MSBuild。下载link可在this page底部找到。在安装select下面的选项:

更多信息见this issue

以下是 Omnisharp v1.25.0 发行说明中的​​文本:“Announcement: The C# extension no longer ships with an included Mono & MSBuild Tools". I have installed .Net 6.0 并且 omnisharp v1.25.0 能够从那里找到 MSBuild。

旧版本的 Omnisharp 在其扩展安装文件夹 C:\Users\Username.vscode\extensions\ms-dotnettools.csharp-XX.XX.XX.....[=17 中提供了 MSBuild =].XX.XX\msbuild