如何使用TFS2010管理解决方案之间的依赖关系

时间:2010-10-22 11:26:31

标签: msbuild dependencies tfs2010

我考虑为我的团队切换到TFS2010。现在我们正在使用NANT脚本,我想知道如何使用TFS2010解决以下问题。

团队正在研究一个由多个解决方案(.sln)组成的框架。在每个解决方案中,我们都有一个“References”文件夹,我们放置解决方案使用的程序集。

例如:

SolutionA

  • ProjectAA
  • ProjectAB
  • 参考(空)

SolutionB

  • ProjectBA
  • 参考
    • ProjectAA.dll
    • ProjectAB.dll

在构建期间,我们首先构建低级解决方案,然后将生成的程序集移动到相应的“Reference”文件夹中。然后我们构建另一个解决方案,并在其他解决方案中移动生成的程序集。

你知道我们怎么能用TFS2010做到这一点吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

这应该相对容易。对于需要共享的每组程序集,请从源代码管理结构中的静态位置分支它们。现在抓取一个 TFSBuild.proj 构建文件(这些文件替换你的NAnt文件),并覆盖解决方案A的AfterCompile目标或解决方案B的BeforeCompile目标,然后使用tf命令将更改合并到分支位置。合并后,使用tf命令也可以在该目标位置进行签入。

请注意,可能有任务库为您包装tf命令,但我手头没有参考,所以我无法告诉您使用哪一个。我个人喜欢使用tf任务直接调用Exec命令。

以下是tf merge命令的语法指南,您可能只想使用T版本参数:

tf merge [/recursive] [/force] [/candidate] [/discard] [/version:versionspec]
         [/lock:(none|checkin|checkout)] [/preview] [/baseless] [/nosummary]
         [/noimplicitbaseless] [/conservative] [/format:(brief|detailed)]
         [/noprompt] [/login:username,[password]] source destination

Versionspec:
    Date/Time         D"any .Net Framework-supported format"
                      or any of the date formats of the local machine
    Changeset number  Cnnnnnn
    Label             Llabelname
    Latest version    T
    Workspace         Wworkspacename;workspaceowner