Tfs 使用多个团队项目进行团队构建

Tfs 使用多个团队项目进行团队构建,tfs,tfsbuild,Tfs,Tfsbuild,我有以下结构: $ --TeamProject1 ---Solution1.sln ----TestProject1 --TeamProject2 ---Solution2.sln ----TestProject2 在TestProject1中,我添加TestProject2.dll作为引用(不是项目引用,而是文件引用)。我的问题是:如何构建一个引用属于不同团队项目的程序集的解决方案 我已获得包含以下信息的TFSBuild.proj文件: <TfCommand>$(TeamBuil

我有以下结构:

$
--TeamProject1
---Solution1.sln
----TestProject1
--TeamProject2
---Solution2.sln
----TestProject2
在TestProject1中,我添加TestProject2.dll作为引用(不是项目引用,而是文件引用)。我的问题是:如何构建一个引用属于不同团队项目的程序集的解决方案

我已获得包含以下信息的TFSBuild.proj文件:

<TfCommand>$(TeamBuildRefPath)\..\tf.exe</TfCommand>

<SolutionToBuild Include="$(BuildProjectFolderPath)/../../DEV/TeamProject1.sln">
    <Targets></Targets>
    <Properties></Properties>
</SolutionToBuild>
$(TeamBuildRefPath)\..\tf.exe


$(SolutionRoot)
$(SolutionRoot)


提前谢谢


Xiaosu

这是不可能的,在开发者的机器上会有问题。文件引用是一种方法。我通常组织这样的项目:

$
-- TeamProject1
   -- branches
   -- trunk
      Solution1.sln
      -- lib
         TestProject2.dll
      -- src
      -- test
         TestProject1.csproj references TestProject2.dll from lib

-- TeamProject2
   -- branches
   -- trunk
      Solution2.sln
      -- lib
      -- src
      -- test
         TestProject2.csproj
这样,TeamProject1独立于TeamProject2的源代码,它包含所有必要的依赖项。如果TeamProject2发生更改,则无需中断TeamProject1。

引用以下内容:

如果跨团队项目共享源文件或二进制文件,则有两个选项:

  • 分支。使用这种方法,您可以将其他团队项目中的源分支到当前解决方案中。这将创建一个配置,将共享位置的源和服务器端的项目统一起来

  • 工作区映射。使用这种方法,可以将另一个团队项目中的源映射到开发计算机上的工作区中。这将创建一个配置,该配置将来自另一个团队项目的源和客户端上的您的项目统一起来

分支是首选方法,因为它将依赖关系存储在源代码管理服务器上。工作区映射是一种仅客户端的方法,这意味着您和每个开发人员必须在自己的计算机上以及构建服务器上创建映射,以便成功构建应用程序

分支增加了额外的合并开销,但它使您能够更明确地选择更新的二进制文件或源文件


这是很难找到真正的答案,这浪费了我很多时间。因此,如果你遇到这个问题,这里有一个正确解决方案的链接


基本上,UI不允许您在集合上选择多个团队项目。但是,您始终可以键入其他团队项目的实际路径,它将起作用

谢谢您的更新。如何保持TestProject2.dll的同步?在开发阶段,TestProject2.dll可能每周都会更改,因此我是否需要手动将TestProject2.dll从TeamProject2复制到TeamProject1 lib文件夹??谢谢。+1我不知道这是可能的,真的解决了我的问题。
<Target Name="BeforeGet">
    <DeleteWorkspaceTask TeamFoundationServerUrl="$(TeamFoundationServerUrl)" Name="$(WorkspaceName)" />
    <Exec WorkingDirectory="$(SolutionRoot)" Command="&quot;$(TfCommand)&quot; workspace /new $(WorkspaceName) /server:$(TeamFoundationServerUrl)" />
    <Exec WorkingDirectory="$(SolutionRoot)" Command="&quot;$(TfCommand)&quot; workfold /unmap /workspace:$(WorkSpaceName) &quot;$(SolutionRoot)&quot;" />
    <Exec WorkingDirectory="$(SolutionRoot)" Command="&quot;$(TfCommand)&quot; workfold /map /workspace:$(WorkSpaceName) /server:$(TeamFoundationServerUrl) &quot;%(Map.Identity)&quot; &quot;%(Map.LocalPath)&quot;" />
  </Target>
$
-- TeamProject1
   -- branches
   -- trunk
      Solution1.sln
      -- lib
         TestProject2.dll
      -- src
      -- test
         TestProject1.csproj references TestProject2.dll from lib

-- TeamProject2
   -- branches
   -- trunk
      Solution2.sln
      -- lib
      -- src
      -- test
         TestProject2.csproj