在Visual Studio 2015中,我有一个kproj,在这个项目中我想添加一个对任何公共nuget包源都没有的程序集的引用,所以我创建了自己的nuget包,这样就可以了添加对此程序集的引用。
问题是现在我遇到以下异常:
ASP.NET Core 5.0错误CS0012:“Object”类型在未引用的程序集中定义。您必须添加对程序集'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的引用。
关于如何克服这个问题的任何想法?
答案 0 :(得分:5)
解决了它。 从project.json
中删除了框架“aspnetcore50”答案 1 :(得分:5)
正如您所写,从目标框架中删除aspnetcore50
可以解决问题。但是,我想知道为什么以及它带来了什么,我找到了答案。
aspnet50
和aspnetcore50
之间的区别在于它们分别使用.NET Framework 4.6和.NET Core 5。一篇文章What is .NET Core 5 and ASP.NET 5 within .NET 2015 Preview很好地解释了这些差异,简而言之:
当您在Core-CLR和.NET Core 5框架之上运行ASP.NET 5应用程序时,您将获得针对服务器/云优化的端到端堆栈工作负载意味着高吞吐量,内存占用空间非常小,并且是最重要的事情之一,与您的应用程序相关的.NET Core 5框架版本(KRE或K运行时环境)的并行执行,无论其他什么.NET版本可能安装在同一台服务器或机器中。此外,如上所述,您可以在运行在Mac或Linux上的Web服务上运行该Web应用程序。
另一方面,当您在常规CLR上运行ASP.NET 5应用程序,因此.NET Framework 4.6 时,您将获得与现有.NET库的最高级别的兼容性并且比在.NET Core 5上运行时获得的限制少。
这也意味着要利用这些出色的功能,您需要使用与.NET Core 5兼容的库。如果你有一个已编译的DLL,它是针对.NET Framework的,那么很可能它不兼容,你将不得不使用.NET Framework 4.6。
原因是.NET Core 5不包含Basic Class Library,它包含诸如Collections,IO,LINQ等公共组件.BCL组件现在作为单独的NuGet包提供,因此您可以在项目中仅包含您需要的部分。
中阅读有关.NET Core 5目标库的不同之处答案 2 :(得分:4)
事实上,问题是需要asp.net 4.0或4.5版本(低于Core)的旧库。
Microsoft通过安装暂停的NuGet软件包为其提供了解决方案。
通过这种方式,您可以使用旧库运行代码。PM>安装包Microsoft.NETCore.Portable.Compatibility
答案 3 :(得分:0)
PM> Install-package Microsoft.NETCore.Portable.Compatibility