【问题标题】:How can a specific nuget package target be used?如何使用特定的 nuget 包目标?
【发布时间】:2018-08-10 13:48:40
【问题描述】:

我有一个 .net framework 4.7.2 项目,它需要引用一个 nuget 包,该包具有 net framework 4.5.2 和 net standard 2.0 的目标。该项目还引用了其他网络框架项目,因此我还不能将项目重新定位为网络标准。

我正在尝试从 net472 项目中引用 Microsoft.Diagnostics.EventFlow.CoreMicrosoft.Extensions.Configuration 2.1.1。 Microsoft.Diagnostics.EventFlow.Core的net452版本有Microsoft.Extensions.Configuration.Abstractions (>= 1.1.1 && < 2.0.0)的限制,而netstandard2.0版本的Microsoft.Extensions.Configuration.Abstractions (>= 2.0.1)有限制

由于这个依赖限制,我需要使用 netstandard 版本。 net472 应该可以同时使用 net452 和 netstandard2.0 包,但是当一个包同时针对两者时,它希望默认使用 net452 版本。

如何选择要使用的包的目标? packages.config 有一个 targetFramework 属性,但我不知道如何使用 PackageReference

【问题讨论】:

  • 你不能用 NuGet 做到这一点。 NuGet 将使用与项目的目标框架匹配的程序集。您必须直接引用 netstandard 程序集,而不是使用 NuGet - 如果您使用 PackageReferences,这可能无济于事。你有更多关于Because of the dependency restrictions of the net framework version of the package, I need to use the net standard version的信息吗?
  • 谢谢,我已经更新了我的问题。

标签: c# .net nuget


【解决方案1】:

由于该软件包同时具有 net452 和 netstandard2.0 资产,并且您的目标是 net472,因此最接近的资产是 net452 资产。

你可以看到这个here

如果您想使用 netstandard2.0 资产,最简单的选择是通过 dll 引用直接引用 netstandard2.0 资产。

【讨论】:

  • 谢谢,我会向包作者提出这个问题,看看他们是否可以在其中一个 dotnet GitHub 存储库中添加一个 net47 目标,看看是否有比直接引用特定 dll 更好的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
相关资源
最近更新 更多