2009-10-27 9 views
5

J'ai la structure suivante:équipe Construire avec plusieurs projets d'équipe

$ 
--TeamProject1 
---Solution1.sln 
----TestProject1 
--TeamProject2 
---Solution2.sln 
----TestProject2 

En TestProject1, j'ajouter TestProject2.dll comme référence (pas de référence du projet, mais une référence de fichier). Ma question est: comment construire une solution faisant référence à des assemblages appartenant à différents projets d'équipe?

J'ai fichier TFSBuild.proj contenant les informations suivantes:

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

Merci à l'avance.

Xiaosu

Répondre

1

ce AFAIK n'est pas possible et il sera problématique sur les machines de développeurs. Références de fichiers est le chemin à parcourir. Je l'habitude d'organiser des projets comme celui-ci:

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

Cette TeamProject1 façon indépendante à partir du code source de TeamProject2 et il contient toutes les dépendances nécessaires. Si TeamProject2 change, il ne sera pas nécessaire de rompre TeamProject1.

+2

Nous vous remercions de votre mise à jour. Comment garder TestProject2.dll synchronisé? Dans l'étape de développement, TestProject2.dll peut être changé chaque semaine, alors dois-je copier manuellement TestProject2.dll de TeamProject2 vers le dossier lib de TeamProject1? Merci. – Xiaosu

4

Pour citer le official TFS guide on CodePlex:

Si vous partagez la source ou binaires à travers des projets d'équipe, vous avez deux options:

  • Branching. Avec cette approche, vous branchez la source de l'autre projet d'équipe dans votre solution actuelle. Cela crée une configuration qui unifie la source à partir de l'emplacement partagé et votre projet sur le serveur.

  • Mappage d'espace de travail. Avec cette approche, vous mappez la source de l'autre projet d'équipe dans un espace de travail sur votre ordinateur de développement. Cela crée une configuration qui unifie la source de l'autre projet d'équipe et votre projet du côté client.

L'embranchement est l'approche préférée car elle stocke la relation de dépendance sur le serveur de contrôle de source. Le mappage d'espace de travail est une approche côté client, ce qui signifie que vous et chaque développeur devez créer le mappage sur vos propres ordinateurs et également sur le serveur de génération afin de générer l'application avec succès. Le branchement ajoute un surcoût de fusion mais vous permet de prendre la décision de récupérer les binaires mis à jour ou d'en extraire plus explicitement la source.

+0

+1 Je ne savais pas que c'était possible et résout vraiment mon problème. –

0

Il était très difficile de trouver la réponse à cette question et cela m'a fait perdre beaucoup de temps.Donc si jamais vous obtenez ce problème, voici un lien vers la solution correcte

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

Fondamentalement, l'interface utilisateur ne vous permet pas de sélectionner plus d'un projet d'équipe de votre collection. Mais vous pouvez toujours taper le chemin d'accès réel à vos autres projets d'équipe et cela fonctionnera