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>

提前致谢。

小苏

4

3 回答 3

4

引用CodePlex 上的官方 TFS 指南

如果您跨团队项目共享源代码或二进制文件,您有两种选择:

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

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

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

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

于 2010-07-11T07:00:31.840 回答
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。

于 2009-10-27T13:38:01.197 回答
0

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

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/9918911f-5951-43be-9ee9-00214cf17400/buildvnext-and-multiple-team-projects?forum=tfsbuild

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

于 2017-09-29T14:44:24.497 回答