我有一个类库,其中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
的{{1}}。它也使用netstandard1.3
。这意味着我可以使用NETStandard.Library.1.6.0
中不存在的任何类/方法。但与此同时,无论如何,我的项目编制得很好。
为什么不抛出错误?看起来编译器没有验证netstandard1.2
部分中列出的针对全局依赖的平台,对吧?但是原因是什么?
答案 0 :(得分:2)
此行"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
及更少的依赖项,因此您将无法使用netstandard1.2
中不存在的任何类/方法( 1.6.0没有链接到netstandard1.6
)