.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
的应用程序/库的所有依赖项,但您将受到所用框架的限制。您可以阅读更多有关它的信息