2009-10-27 220 views
5

我有以下结构构建:团队与多个团队项目

$ 
--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> 

<Map Include="$/TeamProject1"> 

    <LocalPath>$(SolutionRoot)</LocalPath> 

</Map> 

<Map Include="$/TeamProject2"> 

    <LocalPath>$(SolutionRoot)</LocalPath> 

</Map> 

<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> 

在此先感谢。

小苏

回答

1

AFAIK这是不可能的,这将是对开发人员的机器有问题。文件参考是要走的路。我平时组织项目是这样的:

$ 
-- 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。

+2

感谢您的更新。如何保持TestProject2.dll同步?在开发阶段,TestProject2.dll可能会每周更改,因此我需要将TeamProject2中的TestProject2.dll手动复制到TeamProject1库文件夹? 谢谢。 – Xiaosu 2009-10-27 21:50:54

4

引述official TFS guide on CodePlex

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

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

  • 工作区映射。通过这种方法,您可以将源自其他团队项目的源映射到开发计算机上的工作区。这将创建一个配置,将来自其他团队项目的源与您的项目在客户端进行统一。

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

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

+0

+1我不知道这是可能的,真的解决了我的问题。 – 2013-02-14 14:41:51