共享开源.net库

时间:2010-01-28 02:43:42

标签: .net deployment open-source versioning

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

我可以看到来源版本的方案:

  1. 她检查了nUnit 2.1附带的SuperTest源代码,nUnit 2.8中的副本,重新编译SuperTest,将SuperTest.dll复制到HeadBook中
  2. 她检出了超级源,该源没有附带nUnit但包含必须提供的引用。她在nUnit 2.8中复制,重新编译SuperTest,将SuperTest.dll复制到HeadBook
  3. 我在二进制版本中看到的情景:

    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中,复制到头版和参考文献中
    4. 我正在尝试找出设置此项目的最佳方法。看起来最好的方法是包含一个nUnit副本,有一个本地引用和ilmerge作为构建步骤。

      我想避免 SuperTest 使用我未经过测试的不同版本的依赖项重新编译,但我可能还想避免使用gac,因此部署是无痛的。

      ilmerge会是最好的方法吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

签署二进制版本。具有强名称的程序集将根据需要并排加载正确的版本。然后你包括你正在使用的nUnit 2.1程序集的副本,你已经完成了设置。