VS Code dotnet core C#中的错误:"无法找到类型或命名空间名称'System'",但构建成功

MSt*_*ley 34 c# windows omnisharp .net-core visual-studio-code

当尝试在C#DotNet Core MVC应用程序上使用Visual Studio Code时,我在使Visual Studio代码工作时遇到了很多麻烦.它无法找到与C#相关的任何内容,甚至标记为"使用系统"; 无效,说它找不到它.

但是,当我运行dotnet build时,它会成功,没有警告或错误,项目就会运行.

我的project.json:

 {
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.1.0",
      "type": "platform"
    },
    "Microsoft.EntityFrameworkCore.Sqlite": "1.1.0",
    "Microsoft.EntityFrameworkCore.Design": {
      "version": "1.1.0",
      "type": "build"
    },
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.Logging": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Logging.Debug": "1.1.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.0"
  },

  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我真的用这个把头发拉了出来.

Sha*_*tin 98

有时,Visual Studio Code的C#(由OmniSharp提供支持)会变得混乱.

尝试重新启动OmniSharp.这有两种方式:

  1. 关闭并重新打开Visual Studio代码,或
  2. 打开Command Pallet并键入Restart Omnisharp.

如果我们从命令行而不是从Visual Studio Code中恢复依赖关系,OmniSharp往往会变得混乱.

  • 我确实尝试重启omnisharp,但无济于事.我甚至尝试重新安装整个.net核心SDK和运行时.我认为这个项目在某个地方有点时髦,但我看不到它.我希望我可以调试omnisharp告诉我为什么它找不到系统...... (5认同)
  • 有时,在执行“dotnet build”之前,您必须在 VS Code 中**保存所有**文件。 (4认同)

小智 12

在带有 .NET Core 3.0 的 Fedora 30 上的 VS Code 中,我在使用dotnet new worker创建了一个 worker 项目后遇到了同样的问题

第一个问题是 OmniSharp 服务器没有找到 Sdks 文件夹,解决方案是将此行包含在~/.bashrc 中

export MSBuildSDKsPath="/usr/share/dotnet/sdk/$(dotnet --version)/Sdks"
Run Code Online (Sandbox Code Playgroud)

然后重新启动 VS Code,但 C# 扩展向我显示了一些消息,例如:

命名空间“System”中不存在类型或命名空间名称“Collections”(您是否缺少程序集引用?)

解决方案是,首先,在终端运行中:

dotnet build
Run Code Online (Sandbox Code Playgroud)

然后使用命令面板 (Ctrl+Shift+P) 重新启动 OmniSharp 服务器:

OmniSharp: Restart OmniSharp
Run Code Online (Sandbox Code Playgroud)

然后我重新启动 VS Code,C# 扩展和所有依赖项都正常工作。

  • 完美的 !环境对我很有帮助:) 非常感谢! (2认同)
  • 我在这个问题上花了将近 4 个小时,这是唯一对我有用的方法。太感谢了! (2认同)

Aks*_*nya 5

如果您使用 Microsoft 的 VS Code 扩展“C#”,请尝试以下操作:-

对我来说,执行以下两个步骤解决了问题:-

转到文件 -> 首选项 -> 设置

  1. 搜索omnisharp.useModernNet 并设置为 false
  2. 搜索 dotnet.server.useOmnisharp 并设置为 true

然后按Ctrl+Shift+P

-> 开发人员:重新加载窗口