C# 预定义类型 'System.Object' 未定义或未导入。

32
.NET Core项目中,我更改了所有项目的名称,然后重新加载所有项目后,大约出现了3225个错误。并且主要所有错误都与系统命名空间相关,例如:
  • System.Object 未定义或未导入
  • System.Boolean 未定义或未导入
  • Task 不存在
  • 找不到 ArgumentNullException 命名空间
我该如何解决所有这些错误?

1
在更改项目名称之前,一切都可以工作/编译吗? - C Perkins
1
你在编译时是否遇到了这些错误? - Keyur Ramoliya
是的,在更改项目名称之前,@CPerkins - Akash Limbani
5
清理项目然后重新构建怎么样?或者关闭 VS,手动删除 bin/obj 文件夹,再重新打开 VS 进行编译? - kennyzx
3
删除binobj文件夹后重新构建即可。 - Nishan
显示剩余2条评论
9个回答

72
  • 关闭VS
  • 删除binobj.vs(可能是隐藏的)文件夹
  • 手动运行dotnet restore
  • 重新在VS中打开项目

这样大部分问题都可以解决。


5
清理/重建应该做到这一点。 - dudeNumber4
3
通常在关闭后清理/构建对我来说是有效的。 - Yura
清理和重建是我的方法。但这并没有解决问题。所以我在SO上找到了这个主题。然后关闭并重新打开了VS(VS 2019)。这确实解决了问题。 - qqtf
这个问题可能比较老,但我怀疑是隐式使用的问题。 - Wouter
@Wouter 这不是 using 的问题 - 这是编译器本身出了问题,因此提到了“预定义”类型。使用指令不会影响预定义类型。 - Marc Gravell

7

我在VS Code中遇到了这个问题。在Windows终端中,dotnet builddotnet run 运行正常,但在VS Code中出现错误。删除/还原/重新打开等解决方法都无法修复。

看起来是由于我有一个过时的Visual Studio版本导致C#/OmniSharp扩展在VS Code中混淆了。

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 安装程序中找不到它。

因此,我安装了 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"

错误已经消失了!

免责声明:我在微软工作。


1
谢谢!我的问题正是这个:我的Visual Studio版本过旧。升级后,vscode中不再出现错误。 - macabeus
1
这也解决了我的问题。由于安装时间太长,非常令人恼火。 - MattyMatt
我曾经遇到过同样的问题。在阅读了这条评论和微软文档之后,我意识到我同时运行着一个旧版本的VS Code和我的Visual Studio,导致编译器混淆了。我关闭了VS Code并重新启动了Visual Studio。现在问题已经解决了。谢谢。 - Harshith C
我一直保持更新,但最近开始创建一个 .net 6 中的 Blazor 项目时出现了问题。 - Wouter

3

在我的情况下,错误列表窗口显示了数百个错误。但是当重新构建解决方案时,通常会收到“重建全部成功”的消息。甚至项目能够运行。但整个代码都是红色的。 只需关闭Visual Studio并删除vs文件夹即可解决问题。


2

Gazi的解决方案解决了我的问题,正如她/他所描述的那样。我尝试过更新Visual Studio、清理和重新构建解决方案、重启Visual Studio等方法,但都没有帮助。在解决方案级别删除隐藏的vs文件夹可以解决问题。希望对某些人有所帮助!


1

就像citelao一样,我在使用向导创建新的.NET 6.0隔离AZ函数时,在VS代码中遇到了这个问题。


在OmniSharp日志中,我遇到了类似的问题。

为了查看omni sharp日志,您需要打开“输出”面板,然后在右侧单击下拉菜单: enter image description here

我不想安装VS 2022,因为我的目标是在VS代码中为此项目工作。我在这里找到了答案:omnisharp-roslyn #2247

基本上解决方案是在项目根目录中添加omnisharp.json文件,其内容如下:

{
  "msbuild": {
  "useBundledOnly": true
  }
}

然后我关闭了VS Code,删除了binobj文件夹,然后重新启动了VS Code。


1
  1. 关闭Visual Studio
  2. 删除.vs文件夹(可能是隐藏的)
  3. 在Visual Studio中重新打开项目,错误就消失了。

0
这也可能是解决方案中项目之间存在循环依赖引起的。 错误 MSB4006:目标依赖项图中涉及目标“_GenerateRestoreProjectPathWalk”的循环依赖性。

0

对我来说,这个错误信息

'System.Object' 未定义或未导入

是由于IDE在一个 .csproj 文件中默默地添加了一个 .dll 文件的额外引用。

删除这个不必要的引用后,错误消失了。


0

我尝试了所有建议的解决方案,但都没有起作用。甚至从这里https://github.com/OmniSharp/omnisharp-roslyn/issues/1094#issuecomment-907733500添加omnisharp.json也不行。

以下是对我有效的方法。首先,我的VS Code正在运行最新版本,我认为整个问题是由于OmniSharp选择了独立版本的MSBUILD引起的,而在我的情况下是16.10.1。在VS Code设置中搜索Omnisharp并找到设置Omnisharp:使用现代网络,然后选择该选项。弹出重启OmniSharp服务器的提示,只需选择即可更新我的OmniSharp设置以使用17.5.1。

希望这可以帮助你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接