如何在同一个包中使用 2 个不同版本的 dll? [复制]
Posted
技术标签:
【中文标题】如何在同一个包中使用 2 个不同版本的 dll? [复制]【英文标题】:How to use 2 separate versions of dlls in same package? [duplicate] 【发布时间】:2018-02-06 21:40:28 【问题描述】:我有两个版本的相同 c# dll。我们将 dll 称为 foobar.dll。我有版本 11 和 12,我需要在同一个 csproj 文件中。但是,两个单独的类使用依赖项,它们需要 foobar.dll 版本 11 或 12。
作为附加限制,两个版本都不向后兼容。这主要意味着版本 11 使用对象 A 和 B 在同一个 foobar.dll 中,但版本 12 在 2 个单独的 dll foobar.dll 和 foobarPlugin.dll 分别。因此,仅使用版本 12 会产生运行时错误。
对于这种情况,有没有办法将 dll 版本容器化到特定的类?
【问题讨论】:
请澄清您对“包”一词的使用。请避免使用特定于 Java 的术语。 C# 不是 Java。.csproj
文件不是“包”,而是“项目”。在 C# 世界中,“包”是 NuGet 中的分发单元,完全是另外一回事。
@Dai 这不是一个重复的问题,因为您提到的问题是处理版本向后兼容的情况。我想在绑定重定向中引用多个 dll
【参考方案1】:
有点难,但是你有没有想过用反射器打开这些dll并按照你想要的方式重新编译它?
【讨论】:
我试图避免这个选项。但我正在考虑这种蛮力方法 @Chiquelo 也许您可以尝试使用您将创建的自定义 dll 包装其中一个 dll 并改用您自己的 dll?也许值得一试以上是关于如何在同一个包中使用 2 个不同版本的 dll? [复制]的主要内容,如果未能解决你的问题,请参考以下文章