在 ubuntu 和 .net core 3.0 上缺少 "System" 参考

missing "System" reference on ubuntu and .net core 3.0

我正在尝试在 Ubuntu 机器上使用 .Net Core 3.0 开发一个简单的网络应用程序。 我从这个 link 设置了 .Net Core SDK 和运行时。我设置了 VS Code,然后使用以下命令创建了一个项目 dotnet new webapp -o RazorPagesMovie code -r RazorPagesMovie

我构建了该项目并且它正在运行。但在 VS Code 中,它显示以下错误:

The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?) 

screenshot of vs code

我经常在 .net core 2.x 上收到类似的消息,我发现您必须将对 netstandard 的引用添加到项目文件中才能修复,如下所示:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    ..
  </PropertyGroup>
  <ItemGroup>
    ..
  </ItemGroup>

  <ItemGroup> <Reference Include="netstandard" /> </ItemGroup>
</Project>

关于您的问题,omnisharp-vscode (e.g. 3289, 3290) GitHub 存储库中有多个未解决的问题。一些解决方法如下:

  • 对于 Windows:安装 Visual Studio 2019 Community Edition,或 MsBuild Tools 2019
  • 对于 Linux/MacOS:安装 Mono 6.0.0 或更新版本

或者卸载之前版本的.NET Core。如果您不喜欢这些解决方法,解决该问题的最佳解决方案是暂时安装新的(测试版)OmniSharp 版本。

您可以通过将以下行添加到您的 VS 代码中来安装此版本 settings.json:

"omnisharp.path": "1.34.4-beta.7"  

保存设置后,将安装带有修复程序的新版本 omnisharp-vscode。安装后,如果需要,请重新启动 IDE。我可以确认该修复适用于 Windows.

在 Mac 我尝试删除旧的 dot net 运行时和 sdk,使用 omnisharp 的预览版本并验证 6.0.0 以上的单声道版本 我还删除了项目 bin 和 obj 目录,重新编译,删除了 nuget 缓存目录并恢复了。

然后我 运行 在相关的 post 中跨越这个: 确认!升级到 Mono 6.4 解决了 Linux 下的问题! (在 Mono 6.0 下出现问题,因为我之前有这个版本) 不一定是 6.0....