共享开源.net库

共享开源.net库,.net,deployment,open-source,versioning,.net,Deployment,Open Source,Versioning,假设我在nUnit 2.1的基础上编写了《超级测试》,我想与全世界分享我的创作。Jess很想使用我的图库,她还想直接使用nUnit。她的应用程序HeadBook使用nUnit 2.8 我可以看到源版本的场景: 她检查了nUnit 2.1附带的SuperTest源代码,在nUnit 2.8中复制,重新编译SuperTest,将SuperTest.dll复制到HeadBook中 她检查了SuperTest源,该源不随nUnit提供,但包含必须提供的引用。她复制nUnit 2.8,重新编译SuperT

假设我在nUnit 2.1的基础上编写了《超级测试》,我想与全世界分享我的创作。Jess很想使用我的图库,她还想直接使用nUnit。她的应用程序HeadBook使用nUnit 2.8

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

  • 她检查了nUnit 2.1附带的SuperTest源代码,在nUnit 2.8中复制,重新编译SuperTest,将SuperTest.dll复制到HeadBook中
  • 她检查了SuperTest源,该源不随nUnit提供,但包含必须提供的引用。她复制nUnit 2.8,重新编译SuperTest,将SuperTest.dll复制到HeadBook中
  • 我看到的二进制版本的场景如下:

  • 她下载SuperTest 1.0二进制文件,将SuperTest.dll和nUnit 2.1放入GAC,并从GAC引用SuperTest
  • 她下载SuperTest 1.0二进制文件,将DLL复制到HeadBook中,并重新编译HeadBook以使用nUnit 2.1
  • 她下载SuperTest 1.0二进制文件,这些文件已合并到一个dll中,复制到headbook中,并引用
  • 我正在努力找出建立这个项目的最佳方法。似乎最好的方法是包含nUnit的副本,使用本地引用并将ilmerge作为构建步骤

    我希望避免使用我没有测试过的依赖项的不同版本重新编译SuperTest,但我可能也希望避免使用gac,这样部署就不会痛苦


    ilmerge是最好的方法吗?

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


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

    签署您的二进制版本。具有强名称的程序集将在必要时并排加载正确的版本。然后,包括正在使用的nUnit 2.1程序集的副本,并完成所有设置