【发布时间】:2021-04-09 12:46:06
【问题描述】:
我的应用程序 A 依赖于 nuget 库 B 和 nuget 库 C 版本 1.1.1,在 csproj 中使用 PackageReference。
<PackageReference Include="B" Version="1.0.0" />
<PackageReference Include="C" Version="1.1.1" />
但是,库 B 依赖于库 C >= 1.1.2。
<PackageReference Include="C" Version="1.1.2" />
我无法将我的应用更改为在 C 版本 1.1.2 上运行,我知道 B 可以在 C 版本 1.1.1 上正常工作。
如何强制我的应用 A 使用 C 版本 1.1.1 运行?具体来说,我需要删除编译器错误 CS1705。以前在完整框架中我会使用绑定重定向,但我知道这些在 dotnet 核心中不可用。
A
- B
- C (v = 1.1.1)
B
- C (v >= 1.1.2)
【问题讨论】:
-
为什么不能将应用更改为使用 C v. 1.1.2?库通常是向后兼容的。如果你不是 B 的作者,那可能是不可能的
-
这个例子是一个实际问题的抽象一般案例,其中 A 在我无法完全控制运行时 (Azure Functions) 的托管环境中运行,其中 C v 1.1.2与A不兼容,我无法更改B或C的来源。知道这似乎有点武断,但它确实代表了实际问题的一般情况!
-
那么您将不得不升级到更高版本的库,或者将其作为您的应用程序的依赖项删除并编写您自己的功能实现。什么的。