未定义或导入预定义类型“System.Object”.net 4.6
我正在使用MVC 5和.net 4.6来创建我的移动应用程序也可以连接的Web API。
每当我构建项目时,我都会收到数百个错误,告诉我我需要添加已经存在的引用,而且我的项目中的每个类型都不存在。 这些错误的一些例子:(不包括标题中的那个)
我尝试过的:
- 通过nuGet添加了对System.Runtime的引用。 ( 这个问题的建议。)
- 从project.json文件中的框架中删除了aspnetcore50。 (另一个建议, 这个问题 。)
- 重新启动我的机器VS2015。
- 浏览nuGet包管理器并将项目中的每个包升级到最新版本。
- 实际上确保我可以在解决方案资源管理器的参考节点中看到引用。
更新: – 我的 project.json
文件看起来像这样。 (根据Karls答案修改后。错误列表现在已降至十,但它们仍然与以前相同。)
{ "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" }
我在这里猜测一下,但是看起来很可疑你正在使用常规的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
,你的错误可能会消失。
删除bin
和obj
并重建。
在我的情况下,我有一个项目仍然设置为针对测试版的dnx构建。 更改它以构建我在其他项目中使用的版本修复它。
对我来说,当我向我的解决方案添加新项目时,问题就出现了。 我重新构建了解决方案,错误消失了。
我在包管理器控制台上运行dotnet restore
命令,问题解决了。