在 Linux 上的 .netcore 3.0 中找不到类型或命名空间名称 'System'(是否缺少 using 指令或程序集引用?)

The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?) in .netcore 3.0 on Linux

我刚刚创建了一个简单的 "Hello World" 控制台应用程序,开始使用 VS Code 在 Linux 上测试 .netcore 3.0 开发,它不会编译(当前)26 个错误,主要说明未定义或导入预定义类型 System.Object、System.String、System.Void 等。

.csproj 文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Project Include="Program.cs"/>
  </ItemGroup>
</Project>

Program.Main

using System;

namespace TestNetCore3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

有趣的是,我一直在处理的类库也有同样的问题,它在 Windows 10 机器上编译和运行(测试)正常,但当我加载回购时我的 Linux 机器在接缝处全都散架了。

检查您是否安装了指定的 SDK,在本例中为 .NET 3.0。

您可以通过键入以下内容来执行此操作:

dotnet --list-sdks

对于所有已安装的 SDK 版本,或者像 TiGreX 在评论中指出的那样,使用 :

dotnet --info

另外请记住,对于 3.0 Visual Studio 代码需要最新的 C# 扩展,所以请检查您是否有它。

原来我同时安装了 3.0.100 和 2.2.402 SDK,这导致了冲突。卸载 2.2.402 成功了

sudo rm -rf /usr/share/dotnet/sdk/2.2.402