【发布时间】:2011-01-17 21:54:31
【问题描述】:
我有一个使用 TFS 进行源代码控制的项目。实际上,我在一个 TFS 集合中有 2 个解决方案。假设第一个解决方案称为解决方案A,而第二个解决方案称为解决方案B。每个解决方案在 TFS 中都有自己的项目。现在我遇到的问题是,SolutionB 的项目之一应该引用在 SolutionA 中构建的程序集。那么实现这一目标的最佳实践是什么?
谢谢
【问题讨论】:
标签: visual-studio tfs
我有一个使用 TFS 进行源代码控制的项目。实际上,我在一个 TFS 集合中有 2 个解决方案。假设第一个解决方案称为解决方案A,而第二个解决方案称为解决方案B。每个解决方案在 TFS 中都有自己的项目。现在我遇到的问题是,SolutionB 的项目之一应该引用在 SolutionA 中构建的程序集。那么实现这一目标的最佳实践是什么?
谢谢
【问题讨论】:
标签: visual-studio tfs
您有包含 ProjectA 的解决方案A,以及包含 ProjectB 的解决方案B:
可用于从 ProjectB 引用 ProjectA 的两种最简单的方法是:
只需将 ProjectA 添加到解决方案 B,然后 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 的更改。 dll)。 (您也可以选择签入 C:\Libraries 以进行源代码控制,这样其他团队就可以为 ProjectB 提供预构建的二进制文件,而无需您自己与 SolutionA 有任何关系)
为了澄清我所说的项目引用和文件引用的含义:在您的解决方案资源管理器中,右键单击项目的引用文件夹并选择“添加引用...”。在出现的对话框中,您可以选择“项目”选项卡以列出解决方案中的项目,并引用其中一个(项目引用)。或者选择“浏览”选项卡进行浏览以查找预构建的程序集 .dll 文件(文件引用)
(您也可以将 ProjectA 中的程序集安装到 GAC 中,然后使用添加引用对话框从“.NET”选项卡中引用它,但恕我直言,这是一种更复杂的使用方法,因为您有更多的麻烦清理以从系统中删除 dll)
【讨论】:
有几个选项。
我个人认为,团队项目往往会被过度使用。我喜欢每个团队只有一个团队项目,并将所有代码放在存储库中。
【讨论】:
各位,我找到了更好的解决方案。当我创建 SolutionB 时,我只需在 SolutionB 中添加 ProjectA 而不进行分支。为此,只需单击 File -> Source Control -> Add Project From Source Control。 瞧 :-)
【讨论】: