未定义或导入 C# 预定义类型“System.Object”

Posted

技术标签:

【中文标题】未定义或导入 C# 预定义类型“System.Object”【英文标题】:C# Predefined type 'System.Object' is not defined or imported 【发布时间】:2019-03-23 23:09:55 【问题描述】:

.NET core 项目中,我更改了所有项目的名称,而不是在重新加载所有项目后显示大约 3225 的许多错误。主要是所有错误都与系统命名空间有关,如

System.Object 未定义或导入 System.Boolean 未定义或导入 Task 不存在 找不到命名空间ArgumentNullException

如何解决所有这些错误?

【问题讨论】:

在更改项目名称之前一切正常/编译? 您是否在编译时收到此错误? 是的,在更改项目名称之前@CPerkins 清理项目并重建如何?还是关闭VS,手动删除bin/obj文件夹,然后重新打开VS编译? 删除 binobj 并重建应该可以工作 【参考方案1】: 关闭VS 删除binobj.vs(可能被隐藏)文件夹 手动运行dotnet restore 在VS中重新打开项目

这可以解决大多数问题。

【讨论】:

清理/重建应该这样做 关闭VS后清理/构建通常对我有用。【参考方案2】:

我在 VS Code 中遇到了这个问题。在 Windows 终端中,dotnet builddotnet run 运行良好,但我在 VS Code 中遇到了错误。删除/恢复/重新打开答案没有解决它。

这似乎是一个问题,我有一个过时版本的 Visual Studio 混淆了 VS Code 中的 C#/OmniSharp 扩展。

OmniSharp 日志包含如下内容:

[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 2 MSBuild instance(s)
            1: Visual Studio Enterprise 2019 16.8.30907.101 16.8.3 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin"
            2: StandAlone 17.0.0 - "c:\Users\foo\.vscode-insiders\extensions\ms-dotnettools.csharp-1.23.16\.omnisharp\1.37.16\.msbuild\Current\Bin"
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: Visual Studio Enterprise 2019 16.8.30907.101 16.8.3 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin"

该版本的 Visual Studio 2019 没有安装 .NET 6.0 SDK,我在 VS Installer 中找不到。

所以我安装了 Visual Studio 2022 和 .NET 6.0 SDK 作为安装的一部分。现在我的日志如下所示:

[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 3 MSBuild instance(s)
            1: Visual Studio Enterprise 2022 17.0.31912.275 17.0.0 - "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin"
            2: Visual Studio Enterprise 2019 16.8.30907.101 16.8.3 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin"
            3: StandAlone 17.0.0 - "c:\Users\foo\.vscode-insiders\extensions\ms-dotnettools.csharp-1.23.16\.omnisharp\1.37.16\.msbuild\Current\Bin"
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: Visual Studio Enterprise 2022 17.0.31912.275 17.0.0 - "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin"

错误消失了!

【讨论】:

谢谢!我的问题正是:我的 Visual Studio 已经过时了。升级后vscode不再报错 这也解决了我的问题。很烦人,因为安装时间太长了。 我遇到了同样的问题。阅读此评论和 Microsoft Docs 后,我意识到我的 Visual Studio 旁边运行的是旧版本的 VS Code,编译器很困惑。我关闭了 VS Code 并重新启动了 Visual Studio。现在问题已解决。谢谢。【参考方案3】:

这也可能是由解决方案中项目之间的循环依赖引起的。

错误 MSB4006:在涉及目标“_GenerateRestoreProjectPathWalk”的目标依赖图中存在循环依赖

【讨论】:

以上是关于未定义或导入 C# 预定义类型“System.Object”的主要内容,如果未能解决你的问题,请参考以下文章

未定义或导入预定义类型“System.ValueTuple´2”

预定义类型“System.Object”未定义或导入.net 4.6

未定义或导入预定义类型'system.datatype'(所有数据类型)

c#中出现了object未定义怎么解决

即时窗口中的动态导致“Microsoft.CSharp.RuntimeBinder.Binder”未定义或导入错误

C# 对类型组件的引用声称它在系统中定义,但未找到