2009-10-27 199 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