编译器错误 CS0518

预定义类型“type”未定义或未导入

注释

此错误的解决方法取决于您是否使用现代 SDK 样式项目(以 .csproj 开头的文件)或旧项目格式。 SDK 样式的项目通过 <TargetFramework> 属性自动管理运行时引用。

此问题的主要原因是项目无法访问 .NET 运行时库中的预定义类型。 在新式 SDK 样式项目中,这通常是由于规范不正确或缺失 <TargetFramework> 。 在旧项目中,此问题是由不导入 mscorlib.dll(定义整个 System 命名空间)引起的。 这可能是由以下任一原因引起的:

注释

此警告仅在显式 生成重新生成 作业期间报告。 在 IDE 中键入期间不会将它显示为 IntelliSense 诊断的一部分。 这意味着,如果通过使用该字段或删除字段来修复警告,则警告可能会保留在错误列表中,直到您再次编译或重新编译项目。

  • 已指定命令行编译器中的 NoStandardLib 选项。 NoStandardLib 选项阻止导入 mscorlib.dll。 如果要定义或创建用户特定的系统命名空间,请使用此选项。

  • 引用了错误的 mscorlib.dll。

  • 存在损坏的 Visual Studio .NET 或 .NET Framework 公共语言运行时安装。

  • 早期安装中与最新安装不兼容的剩余组件仍然存在。

若要解决此问题,请执行下列操作之一:

  • 不要从命令行编译器中指定 /nostdlib 选项。

  • 对于现代 SDK 风格的项目,请确保项目面向正确的 .NET 运行时。 在.csproj文件中,验证<TargetFramework>属性指定了预期的运行时。

    <PropertyGroup>
      <TargetFramework>net8.0</TargetFramework>
    </PropertyGroup>
    

    对于多目标项目,请使用 <TargetFrameworks> (plural):

    <PropertyGroup>
      <TargetFrameworks>net8.0;net48</TargetFrameworks>
    </PropertyGroup>
    
  • 对于旧项目格式,请确保项目引用正确的 mscorlib.dll。

  • 重新安装 .NET Framework 公共语言运行时(如果前面的解决方案无法解决问题)。

  • 在 Visual Studio 中重新加载项目。

  • 关闭 Visual Studio,从项目目录中删除 obj 文件夹 bin ,然后重新打开 Visual Studio 并重新生成项目。