【问题标题】:Sharing open source .net libraries [closed]共享开源 .net 库 [关闭]
【发布时间】:2010-01-28 02:43:42
【问题描述】:

假设我在 nUnit 2.1 之上编写了 SuperTest,我想与全世界分享我的创作。 Jess 很想使用我的库,她也想直接使用 nUnit。她的应用 HeadBook 使用 nUnit 2.8

来源版本我可以看到的场景:

  1. 她检查了 nUnit 2.1 附带的 SuperTest 源,在 nUnit 2.8 中复制,重新编译 SuperTest,将 SuperTest.dll 复制到 HeadBook 中
  2. 她检查了 SuperTest 源,它不随 nUnit 一起提供,但包含一个必须提供的参考。她在 nUnit 2.8 中复制,重新编译 SuperTest,将 SuperTest.dll 复制到 HeadBook 中

我看到的二进制版本的场景:

  1. 她下载 SuperTest 1.0 二进制文件,将 SuperTest.dll 和 nUnit 2.1 放入 GAC 并从 GAC 引用 SuperTest
  2. 她下载 SuperTest 1.0 二进制文件,将 dll 复制到 HeadBook 并重新编译 HeadBook 以使用 nUnit 2.1
  3. 她将已被 ILMERGED 的 SuperTest 1.0 二进制文件下载到一个 dll 中,复制到 headbook 和参考文献中

我正在尝试找出设置此项目的最佳方法。似乎最好的方法是包含 nUnit 的副本,具有本地引用并将 ilmerge 作为构建步骤。

我想避免使用我没有测试过的不同版本的依赖项重新编译 SuperTest,但我可能还想避免使用 gac,这样部署就很轻松了。

ilmerge 会是最好的方法吗?

【问题讨论】:

    标签: .net deployment open-source versioning


    【解决方案1】:

    我认为最好的方法是尝试遵循 nUnit 版本,以便 SuperTest 始终与上游依赖项同步。这样,您可以获得与上游匹配的源代码版本(SCM 上的分支)和二进制版本(只需构建一次),而您不需要任何这些。

    如果不这样做,即您不能承诺遵循 nUnit 版本,我倾向于同意捆绑您自己的版本并合并程序集对每个人来说都是最容易的。

    【讨论】:

      【解决方案2】:

      签署您的二进制版本。具有强名称的程序集将加载正确的版本,如有必要,并排加载。然后包含您正在使用的 nUnit 2.1 程序集的副本,一切就绪。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多