В настоящее время у меня есть одно решение, которое содержит как одно разработанное приложение, так и проекты для всех доморощенных библиотек. Все это решение также хранится в одном репозитории Git. Сейчас я собираюсь разработать второе приложение, которое будет использовать те же библиотеки. Это приложение будет иметь разные циклы выпуска, чем первая и разные версии. Вопрос (или вопросы), который у меня есть, состоит в том, как разделить код, как с точки зрения установленного решения, так и с точки зрения Git.
Несколько других полезных деталей, прежде чем говорить об ответах:
- Приложения развертываются на общем сетевом диске, а не на отдельных компьютерах, поэтому у меня есть полный контроль над тем, когда они развернуты и что развертывается с ними
- Библиотеки DLL не используются приложениями после их создания. Каждое приложение имеет в своей папке полную копию всех DLL, PDB и конфигурационных файлов.
- В настоящее время я только один делаю релизы, но еще один или два могут закончить делать релизы, поэтому я хотел бы помнить об этом.
Я крутил пару идей в моей голове, но ни одна из них не кажется удовлетворительной. Я рассмотрел просто держать все в одном решении / одном репозитории Git. Я также думал о разделении решения на несколько репозиториев Git с использованием подмодулей, но подмодули громоздки. Я также думал о том, чтобы сделать каждое приложение своим собственным решением, а все библиотеки - еще одним. Тогда возникает вопрос: могу ли я открыть несколько решений в Visual Studio? Библиотеки часто должны меняться вместе с приложениями, поэтому слишком большое их разделение на отдельные решения или репозитории Git затруднит синхронизацию библиотек и приложений. Еще одна проблема, которую я имею, - это ветвление. Если я разделю решение на несколько репозиториев Git, у меня могут быть ветки для каждого приложения, но если я оставлю один репозиторий Git, у меня может быть только один набор веток для всего.
Я, возможно, даже не задаю себе правильные вопросы, и также возможно, что у меня просто умственный блок, мешающий мне решить простое решение. В любом случае, я обращаюсь к SO-сообществу, чтобы дать мне несколько идей. Я надеюсь, что все ясно, но если нет, я буду рад разъяснить.