.net - 针对不同版本的 NETStandard.Library 的 project.json 依赖项

标签 .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"
    }
  }
}

它以 netstandard1.2 为目标,同时使用依赖于 netstandard1.3System.Security.Claims.4.0.1 。它还使用NETStandard.Library.1.6.0。这意味着我可以使用 netstandard1.2 中不存在的任何类/方法。但与此同时,无论如何,我的项目都能很好地编译。

为什么不抛出错误?看起来编译器没有根据全局依赖项验证 "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 及更少的依赖项,因此您不会被引用能够使用 netstandard1.2 中不存在的任何类/方法(1.6.0 不链接到 netstandard1.6)

关于.net - 针对不同版本的 NETStandard.Library 的 project.json 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38772507/

相关文章:

.net - 将Kibana仪表板集成到.Net MVC应用程序中?

angular - 如何使用 Azure Active Directory for Web API 和 Angular 应用程序实现身份验证

entity-framework - 在.NET Core上使用EntityFrameworkCore和SQLite执行原始SQL

java - 查找 java 标准库类文档的作者

c++ - C 和 C++ 标准库是用什么语言编写的?

c - C语言中的newlib是什么?

c# - 串行端口返回无效数据

c# - 我想使用正则表达式选择以某个字母开头

.net - ASP.NET MVC 和 ADO.NET Entity Framework 中的最佳实践实体验证

c# - dotnet REST API 中返回类型的多态性