2012-01-04 6 views
5

zakładając strukturę folderu w TFS 2010TFS budowy rozdzielczości i względem obszaru roboczego ścieżkę

Main 
    Collection_A 
     Solution_A1 
     Solution_A2 
     Reference Assemblies 
    Collection_B 
     Solution_B1 
      Project_B1A 

Project_B1A referencje DLL w Reference Assemblies z Collection_A za pomocą ścieżki względnej (..\..\..\Collection_A\Reference Assemblies\Whatever.dll). Podczas definiowania definicji kompilacji w TFS występują problemy na karcie Przepływ pracy.

Project_B1A => $(SourceDir) 

odsyłającym Zgromadzenia powinno być

Reference Assemblies => $(SourceDir)\..\..\..\Collection_A\Reference Assemblies 

ale potem TFS wyrzuca błąd

TF215083: The local path $(SourceDir)\..\..\Collection_A\Reference Assemblies for a 
workspace mapping is not valid. (Detail Message: TF10202: The path '..' ends with a 
character which is not allowed. Characters which are not allowed include '.' and ' '.) 

Próbowaliśmy $(SourceDir)\Collection_A\Reference Assemblies i $(BuildDir)\Collection_A\Reference Assemblies ale jak oczekiwano żaden pracował. Czy istnieje jakaś inna zmienna, która mogłaby zostać użyta?

+0

Bardzo dobrze napisane pytanie! Myślę jednak, że chodziło Ci o zakładkę "Workspace", a nie "Workflow". – Louis

Odpowiedz

7

Jak wskazuje komunikat o błędzie, nie myślę, aby przy definiowaniu odwzorowań folderów roboczych była dozwolona ścieżka względna.

Zamiast tego należy rozpocząć mapowanie od najczęstszej ścieżki wszystkich możliwych ścieżek, które chcesz odwzorować (w tym przypadku jest to Główna). Zatem $ (SourceDir) powinno być odwzorowane na Main. Należy jednak odwzorować tylko najwyższy poziom Main (używając gwiazdki jako Main/*). Oznacza to, że nie chcesz mapować głównej rekurencyjnie. Następnie określasz podfoldery głównego w innych mapowaniach.

To będzie wyglądać następująco:

$/Main/* -> $(SourceDir) 
$/Main/Collection_A/Reference Assemblies -> $(SourceDir)\Collection_A\Reference Assemblies 
$/Main/Collection_B/Solution_B1/Project_B1A -> $(SourceDir)Collection_B\Solution_B1\Project_B1A 

Alternatywnie, jeżeli liczba ścieżek nie chcesz mapować jest mniejsza niż liczba ścieżek chcesz mapować pod ścieżką korzeniowego, można mapować ścieżkę główną rekursywnie, ale wybiórczo ukryj te, których nie potrzebujesz.

Mam nadzieję, że to pomoże.

+4

Zgadzam się: +1. Jedna uwaga, nie ustawiłbym twojego pierwszego wiersza '$/Main/* -> $ (SourceDir)' w ogóle - tylko dwa następne, ponieważ ten pierwszy wiersz spowodowałby ściągnięcie wszystkiego w '$/Main /'. Tylko ustawienie dwóch ostatnich powinno działać zgodnie z oczekiwaniami. – pantelif

+0

To może zadziałać, nie pamiętałem dokładnie, czy potrzebujemy pierwszej linii. Dziękuję za wyjaśnienie, że pliki i foldery są pobierane w Main, ale nie rekursywnie. –

+1

Dzięki, to zadziałało. Skończyło się na użyciu $ (BuildDir), ponieważ ścieżki były zbyt długie. Również, jak skomentował @pantelif, nie musiałem mapować głównego. –