安装VS 2015更新3(和nuget 3.4.4)后,我注意到当我导入依赖于 .NETStandard 1.4
的内容时,我的4.6.1项目中安装了更多依赖项 .
由于.NET Framework 4.6.1实现了.NET Standard 1.4,为什么nuget会引入每个 System.X
程序集?它不应该知道目标框架已经拥有它需要的东西吗?
Steps to reproduce what I'm seeing (and confused about):
-
VS 2015 Update 3,将nuget升级到3.5-rc1(但您不必) .
-
针对.NET Framework 4.6.1的新控制台应用程序
-
安装包
Microsoft.IdentityModel.Clients.ActiveDirectory
-
注意它依赖于.NET Standard 1.4(我的目标框架实现了)
-
注意包含的
System.X
(System.IO
,System.Collections
,System.Linq
等) . 在我更新nuget之前没有发生这种情况 .
1 回答
在我的Visual Studio 2015 Update 3中将我的NuGet软件包管理器降级到3.3版之后,我发现当我在项目中安装Microsoft.IdentityModel.Clients.ActiveDirectory软件包时,没有将依赖项添加到我的项目中 . 所以这个问题是由NuGet版本引起的 .
根据release note for NuGet 3.4,它以“ Support for the netstandard and netstandardapp framework monikers ”开头 . 这意味着NuGet 3.4启动支持.NET Standard和.NET Standard Framework相关的应用程序 .
请将NuGet 3.3和NuGet 3.4或更高版本中的Dependencies部分与同一个软件包进行比较 . 在3.4版之前,它显示"Unsupported",但从版本3.4开始,它显示".NET standard, version 1.4" . 这就是安装NuGet 3.4.4时将所有依赖项添加到项目中的原因 .