OmniSharp.MSBuild.ProjectManager 尝试更新未加载的项目:

59

我开始用VS Code开发Asp.net Core Web API,但是当我输入代码时,智能感知/建议没有正常工作。我在互联网上的一些资源中看到,在他们输入using Microsoft.时,EntityFrameworkCore会显示为建议选项。但在我的情况下,它没有显示。在OmniSharp日志中向我显示以下错误。

Starting OmniSharp server at 4/5/2019, 3:37:16 PM
    Target: c:\Dotnet Core\NgWebApi

OmniSharp server started.
    Path: C:\Users\Acer\.vscode\extensions\ms-vscode.csharp-1.18.0\.omnisharp\1.32.11\OmniSharp.exe
    PID: 13684

[info]: OmniSharp.Stdio.Host
        Starting OmniSharp on Windows 6.2.9200.0 (x64)
[info]: OmniSharp.Services.DotNetCliService
        DotNetPath set to dotnet
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 1 MSBuild instance(s)
            1: StandAlone 15.0 - "C:\Users\Acer\.vscode\extensions\ms-vscode.csharp-1.18.0\.omnisharp\1.32.11\msbuild\15.0\Bin"
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        MSBUILD_EXE_PATH environment variable set to 'C:\Users\Acer\.vscode\extensions\ms-vscode.csharp-1.18.0\.omnisharp\1.32.11\msbuild\15.0\Bin\MSBuild.exe'
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: StandAlone 15.0 - "C:\Users\Acer\.vscode\extensions\ms-vscode.csharp-1.18.0\.omnisharp\1.32.11\msbuild\15.0\Bin"
            CscToolExe = csc.exe
            CscToolPath = C:\Users\Acer\.vscode\extensions\ms-vscode.csharp-1.18.0\.omnisharp\1.32.11\msbuild\15.0\Bin\Roslyn
            MSBuildExtensionsPath = C:\Users\Acer\.vscode\extensions\ms-vscode.csharp-1.18.0\.omnisharp\1.32.11\msbuild
            MSBuildToolsPath = C:\Users\Acer\.vscode\extensions\ms-vscode.csharp-1.18.0\.omnisharp\1.32.11\msbuild\15.0\Bin
[info]: OmniSharp.Cake.CakeProjectSystem
        Detecting Cake files in 'c:\Dotnet Core\NgWebApi'.
[info]: OmniSharp.Cake.CakeProjectSystem
        Could not find any Cake files
[info]: OmniSharp.WorkspaceInitializer
        Project system 'OmniSharp.DotNet.DotNetProjectSystem' is disabled in the configuration.
[info]: OmniSharp.MSBuild.ProjectSystem
        No solution files found in 'c:\Dotnet Core\NgWebApi'
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Dotnet Core\NgWebApi\NgWebApi.csproj'
[info]: OmniSharp.Script.ScriptProjectSystem
        Detecting CSX files in 'c:\Dotnet Core\NgWebApi'.
[info]: OmniSharp.Script.ScriptProjectSystem
        Could not find any CSX files
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpWorkspaceOptionsProvider
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Dotnet Core\NgWebApi\NgWebApi.csproj
[info]: OmniSharp.WorkspaceInitializer
        Configuration finished.
[info]: OmniSharp.Stdio.Host
        Omnisharp server running using Stdio at location 'c:\Dotnet Core\NgWebApi' on host 17188.
[warn]: OmniSharp.MSBuild.ProjectManager
        Failed to load project file 'c:\Dotnet Core\NgWebApi\NgWebApi.csproj'.
c:\Dotnet Core\NgWebApi\NgWebApi.csproj(1,1)
Microsoft.Build.Exceptions.InvalidProjectFileException: The SDK 'Microsoft.NET.Sdk.Web' specified could not be found.  c:\Dotnet Core\NgWebApi\NgWebApi.csproj
   at Microsoft.Build.Shared.ProjectErrorUtilities.ThrowInvalidProject(String errorSubCategoryResourceName, IElementLocation elementLocation, String resourceName, Object[] args)
   at Microsoft.Build.Evaluation.Evaluator`4.ExpandAndLoadImportsFromUnescapedImportExpressionConditioned(String directoryOfImportingFile, ProjectImportElement importElement, List`1& projects, Boolean throwOnFileNotExistsError)
   at Microsoft.Build.Evaluation.Evaluator`4.ExpandAndLoadImports(String directoryOfImportingFile, ProjectImportElement importElement)
   at Microsoft.Build.Evaluation.Evaluator`4.EvaluateImportElement(String directoryOfImportingFile, ProjectImportElement importElement)
   at Microsoft.Build.Evaluation.Evaluator`4.PerformDepthFirstPass(ProjectRootElement currentProjectOrImport)
   at Microsoft.Build.Evaluation.Evaluator`4.Evaluate(ILoggingService loggingService, BuildEventContext buildEventContext)
   at Microsoft.Build.Evaluation.Project.Reevaluate(ILoggingService loggingServiceForEvaluation, ProjectLoadSettings loadSettings)
   at Microsoft.Build.Evaluation.Project.ReevaluateIfNecessary(ILoggingService loggingServiceForEvaluation, ProjectLoadSettings loadSettings)
   at Microsoft.Build.Evaluation.Project.Initialize(IDictionary`2 globalProperties, String toolsVersion, String subToolsetVersion, ProjectLoadSettings loadSettings)
   at Microsoft.Build.Evaluation.Project..ctor(String projectFile, IDictionary`2 globalProperties, String toolsVersion, String subToolsetVersion, ProjectCollection projectCollection, ProjectLoadSettings loadSettings)
   at Microsoft.Build.Evaluation.ProjectCollection.LoadProject(String fileName, IDictionary`2 globalProperties, String toolsVersion)
   at OmniSharp.MSBuild.ProjectLoader.EvaluateProjectFileCore(String filePath)
   at OmniSharp.MSBuild.ProjectLoader.BuildProject(String filePath)
   at OmniSharp.MSBuild.ProjectFile.ProjectFileInfo.Load(String filePath, ProjectLoader loader)
   at OmniSharp.MSBuild.ProjectManager.LoadOrReloadProject(String projectFilePath, Func`1 loader)

[fail]: OmniSharp.MSBuild.ProjectManager
        Attempted to update project that is not loaded: c:\Dotnet Core\NgWebApi\NgWebApi.csproj

我重新安装了VS Code和C#C#扩展程序,但仍出现问题。我认为原因是未能正确加载项目,导致Intellisense/建议没有显示。请问如何避免此错误并解决Intellisense/建议未显示的问题。

18个回答

118
已解决(在Ubuntu 16.04和CentOS 7上进行了交叉检查):
在VS Code菜单中,进入文件/首选项/设置。
在“搜索设置”窗口中,键入omnisharp.path。
点击“在settings.json中编辑”的链接。
添加(或编辑)如下内容:"omnisharp.path": "latest" (来源:https://github.com/OmniSharp/omnisharp-vscode/issues/2965

2
这个解决方案对我有效:Win 10、VSCode: 1.32.3 和 .Net Core 2.2.301。 - AMouat
4
Mac OS X 10.15 上运行 VS Code 1.40.2。我的 settings.json 文件里没有这个条目。当我添加它后,Omnisharp 重新安装并且终于恢复了 IntelliSense。感谢 @BernieB。 - Rod Hartzell
12
我这样做了,但它并没有解决问题。 - Stormblessed
2
已修复Intellisense,但未解决“OmniSharp.MSBuild.ProjectManager尝试更新未加载的项目”的错误。请参见下面的答案,将Omnisharp Use Global Mono设置为“always”。 - IdahoB
我正在使用Linux,并且必须设置"omnisharp.useModernNet": true - Art
显示剩余3条评论

67

我通过在 VSCode 上执行以下操作解决了这个问题:

  1. 进入设置(Mac 上为 Code -> Preferences -> Settings)。
  2. 搜索 "omnisharp"。
  3. 找到"Omnisharp: Use Global Mono"选项,将其设置为"always"。
  4. 找到"Omnisharp: Path"选项,并点击"Edit in settings.json"。将"omnisharp.path"更改为"omnisharp.path": latest"。
  5. 重新加载窗口。

1
你救了我的一天。我已经寻找解决方案一个月了。 - The Destroyer
1
这指引了我正确的方向,但我必须将其设置为“从不”。我认为这是因为我安装了核心3.1和核心5。看起来我需要本地的Mono,而不是全局的Mono。- RailinginDFW 1小时前 - RailinginDFW
3
在它正常工作之前,我必须做这两件事情:1. 根据上面的答案更改设置为"omnisharp.path": "latest" ,这样它就会下载到我的 VSCode 中。然后 2. 像你建议的那样使用全局mono:always。这是一个团体努力。谢谢! - M -
2
我按照@Marquizzo的描述进行了操作,现在我已经加载了Core 3.1和Core 5。 - ewilan
2
我没有使用全局Mono设置的选项。 - Drazen Bjelovuk
显示剩余2条评论

16

由于其他解决方案对我都没有用,我搜寻了几个小时,最终找到了另一种解决方法(2021年7月8日):

我在使用.NET、.NET Core或.NET Framework时遇到了同样的错误,以下是该错误的一些截图:

错误弹出窗口

错误输出

在错误输出中,它说要安装此框架版本的开发人员包。你可以在.csproj文件中找到该版本:

输入图像描述

通过在dotnet microsoft网站上安装该版本的.NET Framework:.NET Framework下载列表,重新加载VSCode后,我修复了错误并让Unity的Intellisense起作用。

简而言之: 我的解决方法是安装.NET Framework 4.7.1版本。


在VSCode 1.60.0中工作。 - Cardstdani
这是直接的离线安装程序。它为我解决了问题: https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net471-developer-pack-offline-installer - Bobby Connolly

6

对于最新版本的Omnisharp,只需在VS code C#扩展设置中取消使用ModernNet的勾选,如屏幕截图所示。

enter image description here

2
已确认在Mac上使用Unity版本2021.3.13f1可正常工作。 - Ian Newland
1
这对我在Linux Pop OS 22.04(基于Ubuntu)上解决了问题。 - Noob17
1
这个对我在 Mac M2 Max Pro 上起作用了。谢谢!!! - s-atv

6
为了解决这个问题,我采取了几个措施。首先,我通过安装其 beta 版本来降级 OmniSharp 版本,并将该版本的 .vsix 文件下载到我的计算机上。使用以下步骤将 .vsix 安装到 Visual Studio Code 中。
  1. 打开 Visual Studio Code 并从菜单中选择 View->Extensions 以显示扩展面板。
  2. 点击扩展面板右上角的...并选择 "Install from VSIX..."。
  3. 找到我下载的 .vsix 文件并打开它。
  4. 然后重新启动 VS Code。

但问题仍然存在,所以我将 .Net core 的 SDK v2.2.202 版本降级到 2.1.202 ,问题解决了。

更新:在重新安装 VS Code 后,又遇到了相同的问题,通过以下方式解决。

  1. 在 Visual Studio Code 菜单中,进入 File > Preferences > Settings,或按下 Ctrl+++,

  2. 搜索设置字段中,输入 omnisharp.path

  3. 点击Edit in settings.json

在其中添加/编辑如下内容:

{
  "omnisharp.path": "latest"
}

如果您的settings.json中已经有条目,请在最后一个条目后面加上逗号,并像这样添加一行:
{
  "workbench.colorTheme": "Solarized Light",
  "omnisharp.path": "latest"
}

最后,保存settings.json

你将看到一个提示:“OmniSharp 配置已更改。您是否要使用更改重新启动 OmniSharp 服务器?” 点击“重新启动 OmniSharp”按钮重新加载。

在输出窗口中,您可以看到最新版本下载时的更新。


3

这个方法行得通,而且实际上受到了Unity for Visual Studio Code指南的推荐。 - htafoya
请注意,如果您已安装Visual Studio for Mac并启用了自动更新,则它将下载一个版本的Mono MDK,该版本大于Mono网站上“Visual Studio Channel”的指定版本。除此之外,在我的情况下使其正常工作的关键是卸载/重新安装“C#”扩展,然后按照ege解决方案设置VS Code设置“Omnisharp:Use Global Mono”为“always”。现在这两个IDE都可以正常工作了。 - Neil Monroe
额外说明:请前往设置并禁用“omnisharp.useModernNet”。 - erim kurt

2

如果你正在运行一个旧的.NET项目(<.NET 6),将useModernNet设置为false将允许OmniSharp针对正确的.NET框架版本进行目标定位。

settings.json中:

"omnisharp.useModernNet": false

或者,可以通过VS Code的设置面板完成此操作:文件>首选项>设置,搜索omnisharp.useModernNet并取消Omnisharp: Use Modern Net复选框。


我刚试了一下,对我有效(在 Mac 上使用 VS Code 1.74.3 和 Unity 2021.3.8f1)。当你将值设置为 false 时,重新启动 VSC。 - franco

1

解决方案:检查是否安装了Visual Studio Build Packages,如果是,请卸载它。一旦卸载,VScode将正常工作,并且智能感知功能将恢复。 祝你好运!


已验证适用于Visual Studio Code 1.40.2(用户设置)、.NET Core 3.1控制台应用程序和Windows 10 Pro 1803。 - x__x

1
在我的情况下,我在Visual Studio Code中删除了obj文件夹。关闭并重新打开Visual Studio Code并重新构建项目。之后它就可以工作了。

1

我也遇到了同样的问题。如果以上解决方案都没有起作用,那么您可以尝试下面的解决方案。

在查看日志时,我意识到了真正的问题:“找不到指定的SDK“ Microsoft.NET.Sdk ”。”

我从这里安装了最新的稳定版Mono(6.8.0): https://www.mono-project.com/download/stable/

然后打开了~bash_profile并导出了mono的框架路径: export FrameworkPathOverride=/Library/Frameworks/Mono.framework/Versions/Current

对我来说很好用。希望对你也有用。


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