我有以下问题。我尝试为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时,我出现以下错误:
当我将我的库中的目标框架更改为.NET Standard 1.6时,我可以添加System.Web.dll,但我变成了错误:
我向Google询问了.NET标准并发现了这个表
所以我认为.NET Standard 2.0适用于4.6.1。在我的ASP.NET MVC项目中,我可以添加Entity Framework 6.2.0和System.Web.dll,那么为什么我不能为我的类库做这个呢?
P.S。我只在porperty窗口中看到.NET标准。
答案 0 :(得分:3)
所以我认为.NET Standard 2.0适用于4.6.1。
.NET Framework 4.6.1库可以使用.NET标准2.0库。
但是,.NET标准2.0库无法引用 .NET Framework库,例如 .NET Standard 2.0可能库引用.NET Framework库,但是only in compatibility mode。建议仅在.NET标准选项尚不可用的情况下使用兼容模式 。由于我们知道在.NET Standard上永远不会发布System.Web
。System.Web
(以及许多其他.NET Framework名称空间),因此不应从.NET标准库中引用它。
.NET Standard适用于需要在多个平台(例如.NET Framework和.NET Core)上运行的可移植库。如果这只是一个永远不会在应用程序之外使用的应用程序层,那么您应该具有与ASP.NET MVC项目相同的目标(.NET Framework 4.6.1
)。
您可以通过手动更改.csproj
文件中的目标来切换。
<TargetFramework>net461</TargetFramework>
Unload Project
。Edit <projectName>.csproj
。