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

我正在使用 MVC 5和.net 4.6来创建一个我的移动应用程序也可以连接的 web API。

每当我构建项目时,我都会收到成百上千的错误信息,告诉我需要添加已经存在的引用,而且我的项目中的每一种类型都“不存在”。这些错误的一些例子: (不包括标题中的一个)

ErrorList

我试过的方法:

  • 通过 nuGet 添加了对 System.Runtime 的引用(来自 这个问题的推荐)
  • 从 project.json 文件中的框架中删除了 aspnetcore50(另一个建议是 这个问题)
  • 重启 VS2015我的机器。
  • 浏览 nuGet 软件包管理器并将项目中的每个软件包升级到最新版本。
  • 实际上确保我可以看到解决方案资源管理器的引用节点中的引用。

更新: -我的 project.json文件如下所示。(根据卡尔斯回答修改后。错误列表现在减少到了10个,但是它们仍然是和以前一样的错误。)

{
"commands": {
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000"
},
"dependencies": {
"Microsoft.AspNet.Server.IIS": "1.0.0-beta5",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta5",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta5",
"Microsoft.AspNet.Mvc": "6.0.0-beta5",
"System.Runtime": "4.0.20-beta-23019"
},
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
],
"frameworks": {
"dnx451": {
"frameworkAssemblies": {
"System.Data": "4.0.0.0",
"System.Data.DataSetExtensions": "4.0.0.0",
"System.Data.Linq": "4.0.0.0"
}
}
},
"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
],
"version": "1.0.0-*",
"webroot": "wwwroot"
}
161967 次浏览

我猜这里有一点,但它看起来可疑,你是使用常规 System.Data.*的东西为 dnx451,但没有任何东西来弥补它的 dnxcore50。你的目标是核心版本还是只是从项目创建的剩余?如果您希望以核心版本为目标,并且仍然使用旧的 System.Data.*内容,那么您需要像下面这样包装这些程序集中的任何内容。

#if DNX451
// Do some DNX451 specific stuff here
#endif

反过来也一样。

#if DNXCORE50
// Do some DNXCORE50 specific stuff here
#endif

但是,如果您还没有考虑支持这一点,那么我只需将 dnxcore50从框架列表中删除,您的错误可能就会消失。

在我的案例中,我有一个项目,仍然设置为构建一个测试版的 dnx。修改它以根据我在其他项目中使用的版本构建它。

删除 binobj并重建。

对于我来说,问题发生在我将一个新项目添加到我的解决方案中时。我重新构建了解决方案,错误消失了。

我在 Package Manager 控制台上运行 dotnet restore命令,问题就解决了。

对我来说,这不一样。 首先检查 系统运行时引用是否添加到项目中。如果它被添加到您的项目中,请按照以下步骤操作。

  1. 从项目中打开“引用”并选择 System.Runtime 程序集。
  2. 右键单击 System.Runtime 并选择 property。
  3. 具体版本的值从 False 更改为 True。

注意: 在我的案例中,我使用的是 Visual Studio 2019Project Framework Version-4.6.2

以我为例,下面是我所遵循的步骤:

  1. 我移除了垃圾箱和物品,重建了一个。(没有工作)
  2. 卸载项目。(结果是“资产文件 project.Assets.json 未找到。运行 NuGet 包恢复”)
  3. 我通过 Visual Studio 2017 > > Tools > > NuGet Package Manager > > Package Manager Console 运行 dotnet restore命令。
  4. 重建解决方案。(问题解决)

花了将近2天的时间来修复。尝试了 重新安装几次,但没有工作。

对我来说最终奏效的是。

运行 VS 安装程序维修。 由于错误,我不得不手动卸载所有实例 < strong > MS. NET Core SDK-2.1 xxx

运行 VS 安装程序维修。 没有错误。 移除 垃圾箱对不起重建

在包管理器控制台上运行 dotnet restore命令,问题解决。

这浪费了我很多时间。关闭视觉工作室。删除。Vs 文件夹并重新启动视觉工作室。一切都会好起来的。

通常在更改分支或合并分支时会发生这种情况。

我刚刚打开 VisualStudio“作为管理员”,它工作了!

我也有同样的问题。我花了两天时间试图解决这个问题。我尝试重新安装 VisualStudio,清除 VisualStudio 缓存,卸载 VisualStudio 或再次安装 Windows10 = > ,但没有成功。

你可以尝试下面的步骤,这些步骤对我很有效:

  1. 关闭 VisualStudio
  2. 删除“解决方案”文件夹中的 packages文件夹
  3. 打开 VisualStudio 并重新生成解决方案

祝你好运

VS2019解决方案文件被放置在一个驱动器文件夹下,移动到一个驱动器外的另一个文件夹,修复此问题。

我也收到了这个问题使用 Visual Studio 2019和加载解决方案从 Google/Git。当我的解决方案加载时,Output 选项卡(来自 Package Manager)声明该文件夹不存在: google-api-dotnet-client NuPkgs Support。我添加了文件夹 NuPkgs,然后在 NuPckgs 中支持,并重新启动 VisualStudio,然后恢复所有的项目。这解决了我的问题。

检查输出选项卡(来自 PackageManager) ,以确保项目正在成功还原。

这些错误仅在视图(。Cshtml)文件是否打开并在文件关闭或选项卡消失时消失?

MVC5为。Cshtml 剃须刀文件假设在所有视图。检查这里: project-> Views-> web.config (不要与 project-> web.config 文件混淆。剃刀部分定义了引用:

<configuration>
...
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc,
Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
...

但是,如果缺少这个 project-> views-> web.config 文件,这可能是设计上的,也可能不是必需的。我有一个项目,当部署它嵌入到一个更大的顶级网站,定义这些引用,所以在运行时,这些错误是清除。我已经学会了忽略,只是关闭。Cshtml 文件或选择 non。Cshtml 文件。

可以获取顶层视图-> web.config 文件的副本并将其添加到解决方案中。我认为当文件发布时将被忽略,但我不确定这种行为。

我的情况: 我正在开发 VS2019使用。NET Framework 4.5.我添加了一个类库,并在生成的类上获得了 未定义预定义类型“ System.Object”消息。

努力:

  • 删除 bin 和 obj 文件夹,并重新生成。没有更改。
  • 在包管理器控制台中运行 网络恢复。运行完成,说没有什么可做的。没有更改。

我的解决方案: 我卸载了项目并重新加载了依赖项。

如果这对任何人有帮助的话:

我的问题是编译器找不到 System.Index(或类似的东西)

这个错误消息并没有多大帮助,但是我注意到 array[^1],在一些搜索之后,发现它只是一个从数组末尾索引的花哨的方法。

只要把 array[^1]改成 array[array.Length-1]就行了。

不是最优雅的解决方案,但也许有帮助

在我的例子中,错误与解决方案中的类库项目有关。

在我重新构建库之后,所有的错误都消失了。

严重程度代码描述项目文件行抑制状态 CS0518预定义类型系统错误。没有定义或导入 Fabrikafa.CC.Library C: _ Repos Fabrikafa.CC Fabrikafa.CC.Library ViewModel userviewmodel.cs 为5 Active

阅读这篇文章可能有助于找到这个错误背后的原因:

Https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs0518

我有同样的问题(VS2022) ,并试图删除 bin中的 obj文件夹来解决它,但没有工作。

因此,我通过右键单击有问题的项目并选择 Load Entire Dependency Tree来强制重新加载依赖项,这为我解决了问题!

Load Entire Dependency Tree

我查看了项目的构建顺序,并且仅仅构建了第一个项目本身。一旦构建完成,我就能够构建完整的解决方案,错误就消失了。

我的理论是和记忆有关。在打开几个 VS 2019的副本之后,我经常达到85-90% 的内存使用率——如果我只打开1个或2个副本,这似乎不会发生。我可以什么都不做,突然之间,我所有的 System 和 System.IO 引用都会出现红色的波浪线,智能感知无法识别它们(尽管该项目构建得很好)。唯一有效的方法(直到再次发生)是退出并重新启动 VisualStudio。尝试了所有这些不起作用的方法: 卸载/重载项目 关闭/重新打开解决方案 清除 bin/obj 文件夹 NuGet 软件包缓存清除(它不是 NuGet 软件包,所以不确定为什么要这样做)