2009-10-27 13 views
5

ho ottenuto la seguente struttura:squadra Costruire con più progetti del team

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

In TestProject1, aggiungo TestProject2.dll come riferimento (non un riferimento al progetto, ma un riferimento al file). La mia domanda è: come costruire una soluzione che faccia riferimento a gruppi appartenenti a diversi progetti di team?

ho avuto il file TFSBuild.proj contenente le seguenti informazioni:

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

Grazie in anticipo.

Xiaosu

risposta

1

per quanto ne so questo non è possibile e sarà problematico sulle macchine dello sviluppatore. I riferimenti ai file sono la strada da percorrere. Io di solito organizzare progetti come questo:

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

questo modo TeamProject1 è indipendente dal codice sorgente di TeamProject2 e contiene tutte le dipendenze necessarie. Se TeamProject2 lo modifica, non sarà necessario interrompere TeamProject1.

+2

Grazie per il tuo aggiornamento. Come mantenere TestProject2.dll in sincronia? Nella fase di sviluppo, TestProject2.dll potrebbe essere cambiato ogni settimana, quindi devo copiare manualmente TestProject2.dll da TeamProject2 alla cartella lib di TeamProject1 ?? Grazie. – Xiaosu

4

Per citare il official TFS guide on CodePlex:

Se si condivide sorgente o binari attraverso progetti di gruppo, si hanno due opzioni:

  • Branching. Con questo approccio, si dirama la fonte dall'altro progetto del team nella soluzione attuale. Ciò crea una configurazione che unifica l'origine dalla posizione condivisa e dal progetto sul lato server.

  • Mappatura area di lavoro. Con questo approccio, si mappa la sorgente dall'altro progetto del team in un'area di lavoro sul proprio computer di sviluppo. Ciò crea una configurazione che unifica la sorgente dall'altro progetto del team e il tuo progetto sul lato client.

Branching è l'approccio preferito perché memorizza la relazione di dipendenza sul server di controllo del codice sorgente. La mappatura dell'area di lavoro è un approccio solo lato client, il che significa che tu e ogni sviluppatore devi creare il mapping sui tuoi computer e anche sul server di generazione per creare correttamente l'applicazione.

La ramificazione aggiunge ulteriore overhead di merge ma consente di prendere la decisione di prelevare i binari aggiornati o l'origine in modo più esplicito.

+0

+1 Non sapevo che fosse possibile e risolvo davvero il mio problema. –

0

È stato molto difficile trovare la risposta effettiva per questo e ha sprecato molto del mio tempo.Quindi, se mai questo problema, ecco un link per la soluzione corretta

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

In sostanza l'interfaccia utente non consente di selezionare progetti più di una squadra sulla vostra collezione. Ma puoi sempre digitare il percorso effettivo per i tuoi progetti di altri team e funzionerà allo

Problemi correlati