2011-01-16 3 views
2

У меня есть проект, который находится под контролем источника с использованием TFS. На самом деле, у меня есть 2 решения в одной коллекции TFS. предположим, что первое решение называется решением А, а второе - решением. Каждое решение имеет собственный проект в TFS. Теперь проблема заключается в том, что один из проектов SolutionB должен ссылаться на сборку, которая создается в SolutionA. Итак, какие лучшие практики для этого?TFS и ссылочные сборки

Thanks

ответ

1

Есть несколько вариантов.

  1. Если одна и та же команда управляет обоими решениями, я бы настоятельно рекомендовал просто поместить их в один и тот же командный проект или просто использовать один и тот же исходный репозиторий между обоими проектами.
  2. Если они управляются разными командами, имеет смысл просто дать решение b двоичную копию решения a и обновить его, когда он выпустит.
  3. Если ни один из них не работает, вы можете добавить собственный скрипт msbuild в решении b, который получит самую последнюю версию решения a из источника и построит ее до создания b. Что-то like this

Мое личное мнение состоит в том, что командные проекты, как правило, переполняются. Мне нравится иметь только один командный проект для каждой команды и размещать там весь код в репозитории.

+0

Спасибо за ручку за ваш ответ. Я новичок с tfs и don ' что вы подразумеваете под «совместным использованием одного и того же исходного репозитория». Вы имеете в виду добавление проекта класса lib (который содержится в SolutionA) в solutionB? Как это делается? спасибо снова – Davita

+0

@ Давита: Я думаю, что я использовал неправильный жаргон , но когда вы настраиваете командные проекты, у вас есть опция «Папка управления новым источником» или «Создайте новую ветвь управления исходным кодом» Это похоже на шаг 4 в «Мастере создания нового командного проекта» – Brook

+0

Брук, мне очень жаль вам сказать :), но я не понимаю, что означает ветка управления исходным кодом. :(Как я уже сказал, я новичок :( – Davita

2

Вы SolutionA, содержащий Projecta и SolutionB, содержащий ProjectB:

Два простых подходы можно использовать для ссылок Projecta из ProjectB являются:

  • Просто добавьте Projecta к SolutionB, а затем ProjectB может использовать ссылку на проект для ProjectA. Это означает, что вы разделяете исходный код ProjectA и делаете независимую сборку изнутри SolutionB, а также SolutionA. Это немного замедлит вашу сборку SolutionB (так как вы теперь всегда строите ProjectA в ней), но позволит вам вносить изменения в исходный код ProjectA и относиться к ней как к нормальной части SolutionB.

  • Build SolutionA и используйте шаг после сборки (или перенаправление выходного пути), чтобы сохранить полученную в результате сборку ProjectA (и ее файлы pdb и xml, если вы хотите отлаживать ее) в общую папку (например, C: \ Libraries). Затем используйте ссылку на файл из ProjectB в C: \ Libraries \ ProjectA.dll. Это позволяет быстро создавать решение SolutionB и устраняет необходимость использования исходного кода ProjectA, но означает, что для любых изменений в ProjectA требуется двойная сборка (сначала SolutionA создаст .dll, а затем SolutionB, чтобы забрать изменения. DLL). (Вы можете также выбрать, чтобы проверить в C: \ Библиотеки для управления исходной кода, чтобы другая команда могла бы просто обеспечить бинарник для ProjectB, а не вас, не имеет ничего общего с SolutionA самостоятельно)

Для уточнения что я имею в виду под проектами и ссылками на файлы: в своем обозревателе решений щелкните правой кнопкой мыши папку «Справочники проекта» и выберите «Добавить ссылку ...». В появившемся диалоговом окне вы можете выбрать вкладку «Проекты», чтобы отобразить проекты в своем решении, и указать одну из них (ссылку на проект). Или выберите вкладку «Обзор», чтобы найти готовый сборник .dll-файл (ссылка на файл)

(Вы также можете установить сборку из ProjectA в GAC, а затем использовать диалоговое окно добавления ссылки ссылайтесь на нее с ".NET ", но IMHO это более сложный подход к использованию, так как у вас больше беспорядок для очистки, чтобы удалить DLL из вашей системы)

+0

Спасибо Джейсону. Меня больше интересует решение 1. Скажем, если я добавлю projectA в решениеB, что произойдет с проектом projectA, если я изменю проект projectA?: D Do они имеют один и тот же путь tfs или они независимы друг от друга, как я могу это достичь? Спасибо – Davita

+0

Если вы применяете любой из этих подходов, у вас есть только один набор исходных кодов для ProjectA (лет) вы просто делитесь результатами его построения), поэтому любые модификации, которые вы делаете с ним, делаются в «оригинальной копии». Единственный бит, который не является общим, - это два .sln-файла. Вы можете размещать проекты в любом месте TFS - когда вы добавляете каждый проект в свое решение, вы просто «просматриваете ...», чтобы найти их. –

0

Ребята, я нашел лучшее решение. Когда я создаю SolutionB, то я просто добавьте ProjectA в SolutionB без разветвления. Для этого просто нажмите «Файл» -> «Управление источником» -> «Добавить проект из источника управления». Voila :-)

+2

Вот что я сказал :-) ... То, что вы описываете, добавляет «проектную ссылку» к вашему решению. –

+0

Это будет хорошо работать с визуальной студией на месте, но это будет очень интересно, когда вы начнете создавать сборку команды. – Brook

+0

Танские парни. Пока это работает. и @ Джейсон, извините, я неправильно понял ваш пост, я не владею английским :( – Davita

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