我创建了一个.netstandard 1.2库,它与.net 4.5.2兼容。 在我的图书馆中,我引用了NetStandard.Library 1.6:
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.1"
},
"frameworks": {
"netstandard1.2": { }
}
}
我使用dotnet包创建了一个NuGet包,并将其安装在我的NuGet服务器上。我创建了一个针对.NET Framework 4.5.2的简单控制台应用程序。我尝试安装上面的NuGet包,然后得到一个需要安装的大量依赖项列表:
Microsoft.NETCore.Platforms.1.1.0
System.Collections.4.3.0
System.Collections.Concurrent.4.3.0
... snip
NETStandard.Library.1.6.0
MyPackage.1.0.0
我假设我看到所有这些软件包的原因是因为我依赖于元数据包NETStandard.Library,但是有没有办法将它安装到一个完整的.net框架4.5.2项目中而没有得到所有这些包添加?我是否应该将框架net452添加到我的库中,即使我没有需要执行任何条件编译?
答案 0 :(得分:5)
如果仔细查看,System.Collections包不应包含.net完整框架的任何DLL。我相信它只是将System.Collections引用为框架引用。你仍然得到几乎空的nuget包,因为你依赖于NETStandard.Library包,并定义了实现库所需的各种api。额外的包实际上不应该在完整的框架上做任何事情。
如果它困扰你(对我来说它没有)你可以通过更明确地了解你的依赖关系来绕过它。
例如:
{
"version": "1.0.0-*",
"frameworks": {
"net452" : {},
"netstandard1.2": {
"dependencies": {
"NETStandard.Library": "1.6.1"
},
}
}
}