2010-01-28 78 views
0

比方说我写了SuperTest之上nUnit 2.1我想和世界分享我的创作。 Jess很乐意使用我的图书馆,她也希望直接使用nUnit。她的应用HeadBook使用NUnit的2.8分享开放源代码.net库

,我可以看到一个释放的情景:

  1. 她检查出SuperTest源所附带NUnit的2.1,在NUnit的2.8份,重新编译SuperTest,将SuperTest.dll复制到HeadBook中
  2. 她检出不附带nUnit但包含必须提供的引用的SuperTest源代码。她在NUnit的2.8份,重新编译SuperTest,副本SuperTest.dll到HeadBook

我看到一个二进制释放的情景:

  1. 她下载SuperTest 1.0二进制文件,提出SuperTest.dll和NUnit 2.1到从GAC和引用SuperTest的GAC
  2. 她下载SuperTest 1.0二进制文件,复制到的dll和HeadBook重新编译HeadBook与NUnit的工作2.1
  3. 她下载SuperTest 1.0二进制文件具有蜂ñILMERGED到一个DLL,副本到头部和参考

我想解决设置这个项目的最佳方式。看起来最好的方法是包含一个nUnit副本,有一个本地引用和ilmerge作为构建步骤。

我想避免SuperTest正在重新编译不同版本的依赖我没有测试过,但我可能也想避免gac,所以部署是无痛的。

ilmerge会是最好的方法吗?

回答

0

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

如果失败了,即您无法承诺关注nUnit版本,我倾向于同意捆绑您自己的版本和合并程序集对每个人来说都是最简单的。

0

签署您的二进制版本。具有强名称的程序集将根据需要并行加载正确的版本。然后你包含你正在使用的nUnit 2.1程序集的一个副本,并且你已经设置好了。