在Visual Studio 2015中我有一个kproj,在这个项目中我想添加一个对任何公共nuget包源都没有的程序集的引用,所以我创建了自己的nuget包,这样就可以添加引用到这个集会 .
问题是,现在我遇到以下异常:
ASP.NET Core 5.0错误CS0012:类型“对象”在未引用的程序集中定义 . 您必须添加对程序集'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的引用 .
关于如何克服这个问题的任何想法?
4 回答
解决了它 . 从project.json中删除了框架“aspnetcore50”
正如您所写,从目标框架中删除
aspnetcore50
可以解决问题 . 但是,我想知道为什么以及它带来了什么,我找到了答案 .aspnet50
和aspnetcore50
之间的区别在于它们分别使用.NET Framework 4.6和.NET Core 5 . 一篇文章What is .NET Core 5 and ASP.NET 5 within .NET 2015 Preview很好地解释了这些差异,简而言之:这也意味着要利用这些强大的功能,您需要使用与.NET Core 5兼容的库 . 如果你有一个已编译的DLL,它是针对.NET Framework的,那么很可能它不兼容,你将不得不使用.NET Framework 4.6 .
原因是.NET Core 5不包含Basic Class Library,它包含集合,IO,LINQ等常见组件.BCL组件现在作为单独的NuGet包提供,因此您可以包含在只投射你需要的部分 .
关于.NET Core 5目标库的不同之处,您可以阅读Creating multi-target NuGet Packages with vNext
实际上,问题是需要asp.net 4.0或4.5版本(低于Core)的旧库 .
Microsoft通过安装暂停的NuGet包为其提供解决方案 .
这样您就可以使用旧库运行代码 .