【问题标题】:How do I deal with dependencies to multiple versions of the same DLL in Visual Studio?如何在 Visual Studio 中处理对同一 DLL 的多个版本的依赖关系?
【发布时间】:2009-10-19 22:40:06
【问题描述】:

例如:我有一个应用程序 A,它引用了库 A 和库 B。此外,库 A 本身引用了不同版本的库 B。(这些都在 C# 中)

我希望所有引用都指向一个二进制 DLL 文件。现在我有一个像这样的 lib 文件夹:

lib/LibA/v1/LibA_1.dll
lib/LibB/v1/LibB_1.dll
lib/LibB/v2/LibB_2.dll

假设应用程序引用了 LibA v1 和 LibB v2,但 LibA 本身依赖于 LibB v1。如果可能的话,设置它的“正确”方法是什么?我想避免 GAC 并尽量减少手动修改文件,因为这个想法是开发人员可以从 svn 签出应用程序 A 并在不更改路径/引用的情况下构建它,假设他们有 lib 文件夹树签出。

现在我注意到 Visual Studio 没有将 LibA 的 LibB 版本复制到输出目录。文件名差异是否足够,还是我必须更改程序集本身的版本?

【问题讨论】:

    标签: visual-studio svn dependencies versioning


    【解决方案1】:

    正确的做法是使用ILMerge。编译 LibA_1 时,使用 ILMerge 将 LibB_1 静态合并到 LibA_1 dll 文件中。然后,您的应用程序将引用 LibA_1 和 LibB_2,并且 LibA_1 实际上在其 dll 文件中嵌入了 LibB_1 并不明智。我以前用过这种方法,效果很好。

    这实际上是您唯一的选择,除非您准备升级 LibA_1 以使用 LibB_2。如果 LibB_1 和 LibB_2 明显不同,那么升级 LibA_1 可能会很耗时。

    【讨论】:

      猜你喜欢
      • 2010-09-18
      • 2012-12-14
      • 1970-01-01
      • 2012-09-11
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      相关资源
      最近更新 更多