【问题标题】:How to reference a specific version of NetStandard in project.json?如何在 project.json 中引用特定版本的 NetStandard?
【发布时间】:2017-02-10 13:41:01
【问题描述】:

我正在努力弄清楚如何强制 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 框架 4.6 类库,我正在努力解决这里的基础知识。

错误转储:

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 Core 版本信息:

产品信息:

版本:1.0.0-preview2-003131

提交 SHA-1 哈希:635cf40e58

【问题讨论】:

  • 你可以用nLog代替log4net,它有一个.Net Core的扩展包。
  • 您安装了哪个版本的 .Net Core?您的 project.json 在我的机器上恢复没有问题。
  • 谢谢,但我认为这是 SDK 版本。我正在使用.Net Core 1.0.1。您可以在命令提示符下运行dotnet 以获取框架的版本。
  • Log4net 正在移植到 .net 核心。 GitHub:github.com/apache/log4net

标签: c# json .net-core asp.net-core-1.0 project.json


【解决方案1】:

您的project.json 可以在我的机器上正确恢复,所以我猜包/版本控制有问题。

请尝试更改Serilog依赖版本:

"Serilog": "2.3.0-dev-00711"

或者按照您在我们聊天时的建议,将礼貌移到framework 标签中:

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

【讨论】:

  • 不知道为什么我遇到了这么多类型兼容性问题,但升级到新包有帮助。 =)。希望这对其他开发人员来说不是问题,因为看起来 v1.6 是向后兼容的。
【解决方案2】:

我不太确定我是否理解问题所在或您遇到的问题到底是什么。

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

【讨论】:

  • 是的,我理解,这很令人困惑,但 Serilog 的软件包仅与 netstandard 1.3.0 兼容。编译器对此抛出一个错误,并且非常具体地说明了这个兼容性问题。
  • netstandard.library 是一个 nuget 包 (nuget.org/packages/NETStandard.Library/1.6.0),其中包含一组模块/dll。该库支持许多 .net 标准版本:1.0、1.1、1.2 和 1.3。 nuget 版本与 .net 标准版本的版本号不匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多