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

Msbuild 如何使用TFS2010管理解决方案之间的依赖关系,msbuild,dependencies,Msbuild,Dependencies,我正在考虑为我的团队切换到TFS2010。现在我们正在使用NANT脚本,我想知道如何使用TFS2010解决以下问题 该团队正在开发一个由多个解决方案(.sln)组成的框架。在每个解决方案中,我们都有一个“References”文件夹,用于放置解决方案使用的程序集 例如: 解决方案 项目A 项目AB 引用(空) 溶液B ProjectBA 参考文献 ProjectAA.dll ProjectAB.dll 在构建过程中,我们首先构建低级解决方案,然后将生成的程序集移动到适当的“引用”文件

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

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

例如:

解决方案

  • 项目A
  • 项目AB
  • 引用(空)
溶液B

  • ProjectBA
  • 参考文献
    • ProjectAA.dll
    • ProjectAB.dll
在构建过程中,我们首先构建低级解决方案,然后将生成的程序集移动到适当的“引用”文件夹中。然后我们构建另一个解决方案,并在其他解决方案中移动生成的程序集

你知道我们如何用TFS2010做到这一点吗


谢谢

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

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

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

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

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

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

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

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

我打算这样试试。我会让你知道它是否正常工作。谢谢你花时间解释这一切:-)我想这样试试。我会让你知道它是否正常工作。感谢您花时间解释所有这些:-)我们使用了一个工具,我们编写该工具来自动解决一组.sln之间的依赖关系,然后构建它们。我们刚刚以开源的形式发布了它。我们使用一个我们编写的工具来自动解决一组.sln之间的依赖关系,然后构建它们。我们刚刚以开源的形式发布了它。