.net project.json依赖项针对不同版本的NETStandard.Library
我有一个类库,其中.net project.json依赖项针对不同版本的NETStandard.Library,.net,.net-core,standard-library,.net,.net Core,Standard Library,我有一个类库,其中project.json文件如下所示: { "version": "1.0.0-*", "dependencies": { "NETStandard.Library": "1.6.0", "System.Security.Claims": "4.0.1" }, "frameworks": { "netstandard1.2": { "imports": "dnxcore50" } } } 它以netstand
project.json
文件如下所示:
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0",
"System.Security.Claims": "4.0.1"
},
"frameworks": {
"netstandard1.2": {
"imports": "dnxcore50"
}
}
}
它以netstandard1.2
为目标,同时使用System.Security.Claims.4.0.1
,这取决于netstandard1.3
。它还使用了NETStandard.Library.1.6.0
。这意味着我可以使用netstandard1.2
中不存在的任何类/方法。但同时,我的项目编译得很好,不管它
为什么它不抛出错误?看起来编译器不会根据全局依赖项验证“frameworks”
部分中列出的平台,对吗?但是原因是什么呢?这一行“导入”:“dnxcore50”是它工作的原因。如果删除它,您将有一个包System.Security.Claims 4.0.1与netstandard1.2(.NETStandard,Version=v1.2)不兼容。
对于
“NETStandard.Library”:“1.6.0”
,只有netstandard1.2
或更少的依赖项才会被引用,因此您将无法使用netstandard1.2
中不存在的任何类/方法(1.6.0没有链接到netstandard1.6
)那么“NETStandard.Library”:“1.6.0”
和netstandard1.6
在这种情况下,“NETStandard.Library”:“1.6.0”
是一个元包,它包含在1.6之前构建面向NETStandard
的应用程序/库的所有依赖项,但您将受到所用框架的限制。您可以阅读更多有关它的信息