Как настроить управление исходным кодом для нескольких продуктов, зависящих от одной библиотеки классов - PullRequest
2 голосов
/ 10 сентября 2009

Я технический директор и единственный разработчик в моей компании. Я готовлюсь нанять нашего первого разработчика и, возможно, второго в течение следующих 6-12 месяцев. Мне стыдно сказать, что я никогда не использовал контроль исходного кода как часть моего рабочего процесса. Я думаю, что команда разработчиков из одного члена позволила мне быть немного ленивым. Дело не в том, что я этого не хотел, у меня просто небольшой ментальный блок о том, как с этим начать.

У нас есть 5 веб-приложений, которые я создаю и поддерживаю. Мы используем ASP.NET, и каждое веб-приложение ссылается на одну .NET Class Library (DLL), которая была скопирована в папку «bin» для каждого приложения. Я разрабатывал одно решение Visual Studio, которое включает библиотеку классов и все веб-приложения. Я уверен, что немного раздутый, но этот метод позволил мне минимизировать ошибки, позволив мне одновременно выполнять глобальные операции поиска и замены для всех моих приложений (и библиотеки классов).

Я понимаю, что реализация управления исходным кодом сама по себе является большим изменением в моем рабочем процессе, но введение другого разработчика в мой процесс меня немного ошеломило. Мне нужна помощь в разработке рабочего процесса, который позволит моей небольшой команде быстро двигаться без громоздких процессов. Я хотел бы избежать дискуссий о том, какую систему SCC выбрать (мы собираемся использовать Mercurial). Я больше заинтересован в обсуждении структуры и аспектов рабочего процесса.

Вот вопросы, с которыми мне нужна помощь:

  1. Должен ли я разделить каждое приложение на отдельный «проект» или сохранить их все вместе, чтобы мы могли продолжать получать выгоду от глобальных операций поиска и замены при необходимости. Я беспокоюсь о том, чтобы разделить их из-за ситуации с библиотекой классов (см. # 2).

  2. Если разделить приложения на отдельные проекты, я не уверен, что делать с библиотекой классов, копия которой требуется для каждого проекта. Например, допустим, что изменения в одном из приложений (назовите его «проект 1») требуют изменения библиотеки классов ... если библиотека классов находится в отдельном проекте (назовите его «проект 2»), она Мне кажется "грязным", что проект 1 будет зависеть от последних изменений в проекте 2 для правильной работы. Или вы просто вносите свои изменения в проект 2 (библиотеку классов), регистрируете их, а затем копируете недавно скомпилированную dll в проект 1 (но не должна ли новая копия dll, копируемая в проект 1, записываться в ГТК как-то). Я запутался, даже когда я пишу это ...

Заранее спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 10 сентября 2009

Во-первых, поздравляю с решением наконец использовать систему контроля версий. Я знаю, что изменение ваших привычек может быть неприятным, но в долгосрочной перспективе я уверен, что вы увидите преимущества.

  1. В решении с несколькими проектами нет ничего плохого. Я обычно держу около 10, но это просто для того, чтобы улучшить время загрузки. Если держать их вместе лучше для вас, оставьте это так. Использование контроля источников не повлияет на это.
  2. Что касается библиотеки классов, я думаю, что вам нужно изменить способ внесения изменений в проект библиотеки, а не то, как вы используете проекты, которые ссылаются на нее. Внедрите модульное тестирование в проекте библиотеки, чтобы обеспечить обратную совместимость, чтобы вы знали, что удаление последней версии библиотеки не нарушит ваше приложение. Вы, вероятно, обнаружите, что это не будет правдой несколько раз, но по мере того, как вы будете разрабатывать больше модульных тестов для обработки крайних случаев, это будет происходить все реже и меньше.
0 голосов
/ 10 сентября 2009

Вы можете иметь несколько проектов в одном решении Visual Studio. В прошлом я делал так, чтобы проект ASP.NET и проект библиотеки классов были в одном решении. Вы можете сделать так, чтобы ваш проект ASP.NET ссылался на проект библиотеки классов (добавьте ссылку, а затем перейдите на вкладку «Проекты», чтобы показать другие проекты в том же решении). Таким образом, всякий раз, когда вы изменяете библиотеку классов, приложение ASP.NET будет собираться с использованием самой последней версии библиотеки классов. Вы можете настроить несколько решений - по одному для каждого приложения ASP.NET с каждым решением, включая проект класса libary.

Вы также можете установить одно большое решение со всеми вашими проектами ASP.NET, а также с вашей библиотекой классов, но с этим может быть довольно сложно работать, особенно с несколькими разработчиками, работающими над различными страницами ASP.NET.

...