51

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

但是,当我运行 Dotnet 构建时,它会成功,没有警告或错误,并且项目运行。

我的项目.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"
    }
  }
}

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

4

7 回答 7

127

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

尝试重新启动 OmniSharp。这里有两种方法:

  1. 关闭并重新打开 Visual Studio Code,或
  2. 打开命令托盘并键入Restart Omnisharp

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

于 2017-01-23T04:49:37.340 回答
14

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

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

export MSBuildSDKsPath="/usr/share/dotnet/sdk/$(dotnet --version)/Sdks"

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

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

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

dotnet build

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

OmniSharp: Restart OmniSharp

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

于 2019-09-29T12:40:26.460 回答
1

如果您收到此错误,您可能会丢失一个包。

“找不到类型或命名空间名称‘System’”</p>

要添加包,您可以在终端中运行以下命令:

dotnet add package

示例:将 Newtonsoft.Json NuGet 包添加到项目中:

dotnet add package Newtonsoft.Json

之后,转到波浪线,并通过单击灯泡添加缺少的参考。

您还可以安装 Nuget 包管理器扩展来找出您需要的包。请参阅此答案以了解更多信息:

在 Visual Studio Code 中安装 Nuget 包

于 2020-04-15T13:34:08.483 回答
1

我在带有 OmniSharp 和 mono 的 mac 中使用 VS Code,执行以下操作后问题就消失了:

对于安装了 Mono 的 MacOS 和 Linux 用户,这意味着您需要将 omnisharp.useGlobalMono 设置为 never,直到 Mono 版本随 MSBuild 16.7 一起提供。

于 2021-02-12T18:57:09.937 回答
1

好的,我已经弄清楚是什么导致了这个问题。我为 project.json 文件的框架部分引用了错误的导入。

这个:

"frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  }

应该是这样的:

"frameworks": {
    "netcoreapp1.1": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  } 

我在 Windows 8 机器上,出于某种原因,“dnxcore50”无效,但“dotnet5.6”和“portable-net45+win8”有效。我将继续寻找这个问题的原因,但我现在发布这个答案以防其他人正在处理这个问题。

于 2017-01-23T17:32:48.630 回答
-1

另一个导致“使用系统”错误的可能原因是将.vscode目录存储在 git 存储库中(我没有将其添加到.gitignore)。

用 VSCode 打开解决方案文件夹会产生类似上述的跨版本问题,只需删除.vscode目录即可解决。

于 2019-05-06T05:20:49.410 回答
-2

此问题已在以下位置得到解答:https ://github.com/OmniSharp/omnisharp-vscode/issues/2147 。(这是一个长线程。一直滚动到底部。)

于 2019-11-07T21:56:49.550 回答