你应该在哪里存储第三方集会?

Che*_*hev 6 .net c# asp.net version-control tfs

好的,我们有一个相当大的解决方案,里面有大约8个不同的项目.这些项目中的每一个都依赖于各种不同的第三方组件.该解决方案位于源控制的主干分支中.我们还有大约5个不同的树干分支.

管理这些第三方程序集的最佳方法是什么?当您添加对程序集的引用然后单击它并查看属性窗口时,我注意到它具有到程序集的硬编码路径.

例如:我们所有的分支都映射到"C:\ Code \".因此trunk将是"C:\ Code\Trunk",而分支将是"C:\ Code\somebranch".

如果我在"C:\ Code\Trunk"中创建一个名为"Assemblies"的文件夹,然后将所有第三方程序集放在该文件夹中,然后我添加一个程序集的引用,那个程序集引用是否相对?如果我单击添加的程序集,我看到灰色的路径属性显示"C:\ Code\Trunk\Assemblies\someassembly.dll".

如果我然后从树干分支会发生什么?"somebranch"仍然会引用"C:\ Code\Trunk\Assemblies\someassembly.dll",还是会引用"C:\ Code\somebranch\Assemblies\someassembly.dll"?

目前,我们实际上在源控件中有一个名为"Assemblies"的分支,它像任何其他分支一样映射到"C:\ Code \".因此,所有带有引用程序集的项目的分支都引用了"C:\ Code\Assemblies\someassembly.dll",无论项目位于哪个分支,路径都是相同的.

不幸的是,这意味着您必须获得正在使用的分支的最新版本以及程序集分支,以便成功构建解决方案.

总而言之:

  • 如何添加与解决方案相关的引用?(即添加对C:\ Code\Trunk\Assemblies\someassembly.dll的引用,并使该路径相对于添加它的项目,以便在创建分支时引用分支的程序集文件夹而不是trunk的程序集文件夹.或者这个参考已经相对了吗?

  • 管理第三方程序集的其他推荐策略是什么?

Joh*_*lan 5

现在我们有了nuget,您可以将它用于所有支持的oss包,​​甚至可以为其他第三方程序集创建自己的nuget包.值得一提的是openwrapnuget的替代品.

nuget在解决方案级别存储包

所以每个分支(和主干)都会保留这些分支的版本.

我建议这是更好的行为.如果升级第三方,您可能希望将程序集版本分开.

在过去,我使用svn的externals命令从内部开发的依赖项构建特定版本.没有理由你不能将它们放在存储库中并使用外部(或者scm的等价物)来获得正确的版本.

我已经使用构建事件来将dll放到正确的位置.


Dar*_*ten 2

是的,使用主干上的程序集文件夹。比起程序集,我更喜欢“lib”这个名字。

是的,路径已经是相对的。当您分支项目时,您将获得正确的程序集文件夹。

根据您使用的第三方程序集的数量,您还需要组织您的程序集文件夹,这样它就不会是一大堆 dll。