我有以下结构:
$
--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=""$(TfCommand)" workspace /new $(WorkspaceName) /server:$(TeamFoundationServerUrl)" />
<Exec WorkingDirectory="$(SolutionRoot)" Command=""$(TfCommand)" workfold /unmap /workspace:$(WorkSpaceName) "$(SolutionRoot)"" />
<Exec WorkingDirectory="$(SolutionRoot)" Command=""$(TfCommand)" workfold /map /workspace:$(WorkSpaceName) /server:$(TeamFoundationServerUrl) "%(Map.Identity)" "%(Map.LocalPath)"" />
</Target>
提前致谢。
小苏
答案 0 :(得分:4)
引用official TFS guide on CodePlex:
如果您在团队项目中共享源代码或二进制文件,则有两种选择:
<强>分支即可。使用此方法,您可以将源从其他团队项目分支到当前解决方案中。这将创建一个配置,以统一来自共享位置的源和服务器端的项目。
工作区映射。使用此方法,您可以将源从其他团队项目映射到开发计算机上的工作区。这将创建一个配置,在客户端统一来自其他团队项目和项目的源。
分支是首选方法,因为它将依赖关系存储在源控制服务器上。工作区映射是一种仅限客户端的方法,这意味着您和每个开发人员必须在您自己的计算机上以及构建服务器上创建映射,以便成功构建应用程序。
分支增加了额外的合并开销,但它使您能够决定更明确地获取更新的二进制文件或来源。
答案 1 :(得分: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 :(得分:0)
很难找到真正的答案而且浪费了我很多时间。因此,如果你遇到这个问题,这里有一个指向正确解决方案的链接
基本上,UI不允许您在集合中选择多个团队项目。但是,您始终可以键入其他团队项目的实际路径,它将起作用