我有一个使用TFS进行源代码管理的项目。实际上,我在一个TFS Collection中有2个解决方案。假设第一个解决方案称为SolutionA,而第二个解决方案称为SolutionB。每个解决方案都有自己的TFS项目。现在我遇到的问题是,SolutionB的一个项目应该引用一个在SolutionA中构建的程序集。那么实现这一目标的最佳做法是什么?
由于
答案 0 :(得分:2)
您的SolutionA包含ProjectA,而SolutionB包含ProjectB:
可用于从ProjectB引用ProjectA的两种最简单的方法是:
只需将ProjectA添加到SolutionB,然后ProjectB就可以使用对ProjectA的项目引用。这意味着您共享ProjectA的源代码,并从SolutionB和SolutionA中独立构建它。这会稍微减慢您的SolutionB构建速度(因为您现在总是在其中构建ProjectA),但是允许您对ProjectA的源代码进行编辑,并将其视为SolutionB的正常部分。
构建SolutionA并使用构建后步骤(或重定向输出路径)将生成的ProjectA程序集(及其pdb和xml文件,如果您希望能够调试它)保存到共享中文件夹(例如C:\ Libraries)。然后使用ProjectB中的文件引用到C:\ Libraries \ ProjectA.dll。这样可以快速构建SolutionB,并且无需使用ProjectA源代码,但这意味着对ProjectA的任何更改都需要双重构建(首先是SolutionA创建.dll,然后是SolutionB来获取更改。 DLL)。 (您也可以选择签入C:\ Libraries来控制源代码,这样另一个团队就可以为ProjectB提供一个预先构建的二进制文件,而不是你自己必须与SolutionA有任何关系)
澄清Project-references和File-references的含义:在Solution explorer中,右键单击项目的References文件夹,然后选择“Add Reference ...”。在出现的对话框中,您可以选择“项目”选项卡以列出解决方案中的项目,并引用其中一个项目(项目引用)。或者选择“浏览”选项卡进行浏览以查找预构建的程序集.dll文件(文件引用)
(您也可以将程序集从ProjectA安装到GAC中,然后使用添加引用对话框从“.NET”选项卡中引用它,但是恕我直言这是一个更复杂的方法,因为你有更多的混乱清理以从系统中删除dll)
答案 1 :(得分:1)
有几种选择。
我个人认为团队项目往往会被滥用。我希望每个团队只有一个团队项目,并将所有代码放在存储库中。
答案 2 :(得分:0)
大家,我找到了更好的解决方案。当我创建SolutionB时,我只是在SolutionB中添加ProjectA而不进行分支。为此,只需点击文件 - >源控制 - >从源代码管理添加项目。 Voila: - )