无法在同一个类库中添加实体框架和System.Web.dll?

时间:2018-02-02 07:40:58

标签: c# .net entity-framework dll .net-standard

我有以下问题。我尝试为ASP.NET MVC 5项目编写一个类库。

所以我想为Entity Framework 6.2.0和System.Web.dll添加NuGet包。

我的类库具有属性:

目标框架:.NET Standard 2.0

我的ASP.NET MVC项目有:

.NET Framework 4.6.1

因此,当我尝试添加System.Web.dll时,我出现以下错误:

enter image description here

当我将我的库中的目标框架更改为.NET Standard 1.6时,我可以添加System.Web.dll,但我变成了错误:

enter image description here

我向Google询问了.NET标准并发现了这个表

enter image description here

所以我认为.NET Standard 2.0适用于4.6.1。在我的ASP.NET MVC项目中,我可以添加Entity Framework 6.2.0和System.Web.dll,那么为什么我不能为我的类库做这个呢?

P.S。我只在porperty窗口中看到.NET标准。

enter image description here

1 个答案:

答案 0 :(得分:3)

  

所以我认为.NET Standard 2.0适用于4.6.1。

.NET Framework 4.6.1库可以使用.NET标准2.0库

但是,.NET标准2.0库无法引用 .NET Framework库,例如System.Web .NET Standard 2.0可能库引用.NET Framework库,但是only in compatibility mode。建议仅在.NET标准选项尚不可用的情况下使用兼容模式 。由于我们知道在.NET Standard上永远不会发布System.Web(以及许多其他.NET Framework名称空间),因此不应从.NET标准库中引用它。

.NET Standard适用于需要在多个平台(例如.NET Framework和.NET Core)上运行的可移植库。如果这只是一个永远不会在应用程序之外使用的应用程序层,那么您应该具有与ASP.NET MVC项目相同的目标(.NET Framework 4.6.1)。

您可以通过手动更改.csproj文件中的目标来切换。

<TargetFramework>net461</TargetFramework>
  1. 在解决方案资源管理器中右键单击项目节点,然后单击Unload Project
  2. 再次右键单击项目节点,然后单击Edit <projectName>.csproj