2012-01-04 2 views
5

Допуская эту структуру папок в TFS 2010TFS построить определения и относительного рабочего пространства путь

Main 
    Collection_A 
     Solution_A1 
     Solution_A2 
     Reference Assemblies 
    Collection_B 
     Solution_B1 
      Project_B1A 

Project_B1A ссылки на библиотеки DLL в Reference Assemblies из Collection_A, используя относительный путь (..\..\..\Collection_A\Reference Assemblies\Whatever.dll). При определении определения сборки в TFS у нас возникают проблемы на вкладке «Рабочий поток».

Project_B1A => $(SourceDir) 

для ссылочных Ассамблей должно быть

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

но TFS бросает ошибку

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 ' '.) 

Мы попытались $(SourceDir)\Collection_A\Reference Assemblies и $(BuildDir)\Collection_A\Reference Assemblies, но, как ожидается, никто не работал. Есть ли другая переменная, которая может быть использована?

+0

Очень хорошо написанный вопрос! Однако я думаю, что вы имели в виду вкладку «Рабочая область», а не «Рабочий процесс». – Louis

ответ

7

Как указано в сообщении об ошибке, я не думаю, что использование относительного пути разрешено при определении сопоставлений рабочей папки.

Вместо этого вы должны начать сопоставление с наиболее распространенным путем всех возможных путей, которые вы хотите сопоставить (в данном случае это Main). Таким образом, $ (SourceDir) следует сопоставить с Main. Однако вы должны отображать только верхний уровень Main (используя звездочку в качестве Main/*). Это означает, что вы не хотите переназначать Main рекурсивно. Затем вы указываете конкретные вспомогательные папки Main в других сопоставлениях.

Это будет выглядеть примерно так:

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

В качестве альтернативы, если число путей вы не хотите, чтобы отобразить меньше, чем количество дорожек, которые вы хотите отобразить в корневом пути, вы можете отобразить корневой путь рекурсивно, но выборочно скрыть те, которые вам не нужны.

Надеюсь, это поможет.

+4

Согласен: +1. Одна нота, я бы не установил вашу первую строку '$/Main/* -> $ (SourceDir)' вообще - только следующие два, потому что эта первая строка приведет к загрузке всего в '$/Main /'. Просто установка последних двух должна работать по желанию. – pantelif

+0

Это может сработать, я точно не помню, нужна ли нам первая строка. И спасибо за разъяснение, что он загружает файлы и папки под Main, а не рекурсивно. –

+1

Спасибо, что сработало. Я закончил тем, что использовал $ (BuildDir), поскольку пути становились слишком длинными. Кроме того, как прокомментировал @pantelif, мне не нужно было отображать Main. –

Смежные вопросы