我正在寻找在多个开发团队(不在同一办公室/存储库)之间共享.net程序集(两者都处于持续开发阶段)的最合适的解决方案。
第一个团队在一个名为core.dll
的程序集中开发并打包了许多有用的和通用的功能,它们在许多应用程序和库中引用(作为VS项目)。该程序集依次引用非常标准的程序集,如(system.dll
等...)加log4net.dll
(作为其存储库中的第三方):
在我这边,我开发了一个更高级别的程序集Library.dll
,其中我真的想要合并Core.dll
中开发的内容而不是维护重复的代码:
最后,第一个团队反过来对我的代码感兴趣,以开发自己的应用程序:
这似乎是为了保持两个开发团队之间的松散耦合:
首先,我可能不会在Log4Net.dll
中使用与Library.dll
相同的版本Core.dll
(至少我们可以同意使用相同版本或不使用这个第三方的特定版本相当稳定)
其次,在Library.dll
中整合我的Application.dll
时,我可能一直在使用不同版本的Core.dll
,因为他们会不断发展它。
目前我想要在我们的团队之间保持松散耦合,就是让他们为我提供隐藏的'log4net'参考,如下所示:
// Create a single assembly hiding for Log4Net
ILMerge /out:DCore.dll Core.dll Log4Net.dll /internalize
我自己也这样做:
// Create a single assembly hiding for Log4Net and Core
ILMerge /out:DLibrary.dll Library.dll DCore.dll Log4Net.dll /internalize
如果这个解决方案合适的话,我不会知道,我们热烈欢迎任何其他人保持我们两个团队相互联系。
NB1:我不认为将库部署到GAC是一个很好的解决方案,因为Core.dll
和Library.dll
仍然处于持续开发阶段,并且缓存将随着太多无用的副作用而增长旁边发布。
NB2:我已经阅读了这个thread但我对NuGet知之甚少,如果它在这里是合适的。
答案 0 :(得分:2)
就我个人而言,我认为NuGet将在管理包,依赖关系和帮助方面为您提供很多帮助。版本。 NuGet与所有主要CI服务器和Visual Studio集成良好。可以在NuGet文档中找到更多信息:
http://docs.nuget.org/docs/Creating-Packages/Hosting-Your-Own-NuGet-Feeds
您可以在以下博文中阅读有关NuGet如何处理程序集版本控制的更多信息: http://blog.davidebbo.com/2011/01/nuget-versioning-part-1-taking-on-dll.html