project.json 依赖项针对不同版本的 NETStandard.Library
project.json dependencies targeting different versions of NETStandard.Library
我有一个 class 库,其中 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
为目标,同时使用依赖于netstandard1.3
的System.Security.Claims.4.0.1
。而且它还使用 NETStandard.Library.1.6.0
。这意味着我可以使用 netstandard1.2
中不存在的任何 classes/methods。但与此同时,我的项目编译得很好。
为什么不报错?看起来编译器没有根据全局依赖项验证 "frameworks"
部分中列出的平台,对吧?但这是什么原因呢?
这一行"imports": "dnxcore50"
就是它起作用的原因。如果你删除它,你将有一个Package System.Security.Claims 4.0.1 is not compatible with netstandard1.2 (.NETStandard,Version=v1.2).
。
而对于 "NETStandard.Library": "1.6.0",
,只会引用 netstandard1.2
和更少的依赖项,因此您将无法使用 classes/methods 中不存在的任何 classes/methods 13=](1.6.0没有link到netstandard1.6
)
我有一个 class 库,其中 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
为目标,同时使用依赖于netstandard1.3
的System.Security.Claims.4.0.1
。而且它还使用 NETStandard.Library.1.6.0
。这意味着我可以使用 netstandard1.2
中不存在的任何 classes/methods。但与此同时,我的项目编译得很好。
为什么不报错?看起来编译器没有根据全局依赖项验证 "frameworks"
部分中列出的平台,对吧?但这是什么原因呢?
这一行"imports": "dnxcore50"
就是它起作用的原因。如果你删除它,你将有一个Package System.Security.Claims 4.0.1 is not compatible with netstandard1.2 (.NETStandard,Version=v1.2).
。
而对于 "NETStandard.Library": "1.6.0",
,只会引用 netstandard1.2
和更少的依赖项,因此您将无法使用 classes/methods 中不存在的任何 classes/methods 13=](1.6.0没有link到netstandard1.6
)