我们需要找到一种合理的方法来管理我们的内部.NET库,这些库可能会被多个项目重用。谷歌搜索和思考这个问题几个小时导致我得出结论,我想继续:
对于我们拥有的每个库的每个版本,我们的构建服务器(Jenkins)上都会有一个单独的作业。在成功构建库之后,构建输出(通常是.dll文件)将被复制到公共网络存储库。此存储库的结构可能与此类似:
-libraryA
-1.0
-libraryA_1.0.dll
-1.1
-libraryA_1.1.dll
-libraryB
-1.0
-libraryB_1.0.dll
每个想要使用库的项目都会附带一个简单的.bat文件,该文件将必要的库从此存储库复制到专门用于存储项目依赖项的文件夹。然后,将从此文件夹引用依赖项。示例项目可能如下所示:
-project
-src
-dependencies
-libraryB
-1.0
-libraryB_1.0.dll
-getDependencies.bat
getDependencies.bat
将始终删除dependencies
文件夹的内容,并从存储库中获取新的库副本。它将在Jenkins的每个项目构建之前执行。 dependencies
文件夹永远不会被提交给SVN。
我也考虑过一些替代方案:
如果有人能指出我首选解决方案的任何潜在问题或者您认为错误的任何问题,我真的很感激。此外,如果我试图重新发明轮子,并且已经有一些标准化的解决方案,每个人都在使用(除了我提到的替代品),请不要犹豫,赐教我:)
非常感谢!
答案 0 :(得分:2)
您只需要各个版本的库来进行更改。添加新功能和修复错误并不能保证新的版本。此外,使用库的项目应保留他们在其源存储库中使用的二进制文件的副本。
这使您能够在准备好之前更改和修改共享库,而无需强制更改各个项目。项目可以按照他们准备好的速度接受它们,通过获取准备好的最新版本,并在对变更感到满意后将这些新二进制文件检入其源代码控制中。