如何在 project.json 中引用特定版本的 NetStandard?

How to reference a specific version of NetStandard in project.json?

我正在努力弄清楚如何强制 npm(Nuget 包管理器)解析特定版本的 NetStandard1.X 平台。

我正在尝试使用 Serilog 但它支持的 .NetStandard 版本是 v1.3。有什么方法可以通过某些命令或开关或选项在 project.json 文件中强制执行此行为。

        {
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "Serilog": "2.2.1"
  },

  "frameworks": {
    "netstandard1.3": {
      "imports": "dnxcore50",
      "dependencies": {
      }
    }
  }
}

当您指定 v1.3 时,您最终会得到 v1.6。当然必须有办法做到这一点?我正在尝试升级使用 log4net 的旧 .net Framework 4.6 class 库,我正在努力学习这里的基础知识。

错误转储:

Package Serilog 2.2.1 is not compatible with netstandard1.6 (.NETStandard,Version=v1.6). Package Serilog 2.2.1 supports:
  - net45 (.NETFramework,Version=v4.5)
  - net46 (.NETFramework,Version=v4.6)
  - netstandard1.0 (.NETStandard,Version=v1.0)
  - netstandard1.3 (.NETStandard,Version=v1.3)
One or more packages are incompatible with .NETStandard,Version=v1.6.

DotNet 核心版本信息:

产品信息:

版本:1.0.0-preview2-003131

提交 SHA-1 哈希:635cf40e58

我不太确定我理解问题是什么,或者您遇到的问题到底是什么。

但是关于您的 project.json 的一件事让我感到震惊的是 NETStandard.Library 的版本应该是 1.6.0,即使您的目标是 netstandard1.3。 (是的,这令人困惑。)

你的 project.json 在我的机器上正确恢复,所以我猜 packages/versioning 有问题。

请尝试更改Serilog依赖版本:

"Serilog": "2.3.0-dev-00711"

或者正如您在我们聊天期间建议的那样,将礼仪移到 framework 标签中:

"frameworks": { 
    "netstandard1.6": { 
        "imports": "dotnet5.6", 
        "dependencies": { 
            "Serilog": "2.3.0-dev-00711" 
        } 
    } 
}