【问题标题】:Sharing and updating a library共享和更新库
【发布时间】:2012-09-03 07:05:26
【问题描述】:

事实:

  • 我有一个名为 A 的库。
  • 我有两个项目,BC,引用 A
  • 当我编译 BC 时,它们都会创建 A 的编译副本。

我想要实现的是为 BC 创建设置文件。
我还希望他们使用 A 的相同 dll。

因此,如果我将带有 A 1.0B 1.0 安装到机器上,然后将带有 A 1.2C 1.2 安装到机器上,我希望 B 使用更新版本的一个

我该怎么做?
我认为将 dll 保存到设置的公共位置并使用应用程序动态加载它,但我不确定。这里的最佳做法是什么?如果我要把它保存到一个共同的地方,那会是哪里? Visual Studio 附带的设置项目是否允许此类操作?

(我在 Visual Studio 2012 上使用 .NET 4.5)

【问题讨论】:

    标签: c# .net visual-studio shared-libraries updates


    【解决方案1】:

    这样做你会创建 dll 地狱。您应该将它们分开并为每个项目编译更新版本。

    使用更新的 dll 创建一个共享引用文件夹。 让两个项目都从共享引用文件夹中引用项目 A 的 dll。

    为每个新版本创建版本号以保持对 dll 的控制

    【讨论】:

    • 所以有一个计算库,我有两个项目使用它。如果我更新这个库并使其速度提高 60%,我应该使用相同的新版本库分别更新两个项目,否则它会变得太复杂。我说的对吗?
    • 是的 - 从个人经验来看,dll 地狱是由于不知道 dll 是否向后兼容而创建的。单独编译将确保新的 dll 与您的代码匹配。仅仅更新一个 dll,因为它是最新版本,特别是在扩展时可能是灾难性的。
    • 我不能以某种方式检查它是否向后兼容吗?
    • 是的,通过编译解决方案和代码测试。或者花时间使用 dllspy 之类的工具
    【解决方案2】:

    您可以使用程序集重定向来实现此目的。请参考Assembly Redirection

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      相关资源
      最近更新 更多