Вы затронули очень большую тему, которая действительно может стать настолько сложной, насколько вы позволите.
В конечном счете, выбранный вами подход к управлению версиями будет зависеть от того, чего вам нужно достичь, и от того, сколько времени вы должны выделить на его поддержку. Они напрямую связаны.
Две основные цели управления версиями — параллельное выполнение и отслеживание. Параллельное выполнение (SxS) позволяет выполнять несколько версий одной и той же библиотеки DLL в одном приложении. Без изменения номера версии сборки это невозможно. Отслеживание — это просто возможность определить точный моментальный снимок кода, который выполняется на компьютере клиента. Оба могут быть достигнуты путем изменения версии сборки, но первое может быть достигнуто только путем изменения версии сборки.
Многие порекомендуют вам сообщать номера версий всем DLL/EXE-файлам — это хороший способ сделать это, так как это самый упрощенный подход, который также обеспечивает наименьшую гибкость развертывания.
Например, если вы используете какую-либо форму абстракции контракта (определение зависимостей между библиотеками DLL через интерфейсы, а не конкретные типы), вы можете разделить свое приложение на несколько «хранилищ версий». Примером этого может быть клиент и сервер, где взаимозависимость, если она определена в 3-й сборке, заключает контракты WCF. Если они все версии отдельно, то вы можете выпустить новую версию сервера (при условии, что она соответствует тому же контракту), не затрагивая клиента. И наоборот.
Как вы можете видеть, вы будете увеличивать детализацию версий по мере роста ваших требований, но это приведет к непредвиденным обстоятельствам.
Лучшее, что вы можете сделать, это именно то, что вы делаете, сесть и спланировать свои требования, а затем наметить границы версий (какие компоненты могут быть разделены контрактами).
Дальнейшие действия зависят от размера вашего отдела тестирования, но я бы также порекомендовал вам обратить внимание на то, чтобы версия файла отражала (хотя бы частично) номер/дату сборки. Вы будете увеличивать версию сборки только один раз для каждого выпуска клиента, но у вас должна быть другая версия файла для каждой коллекции DLL, которая выходит из сборки. Это связано с тем, что когда вы тестируете и обнаруживаете проблему, уникальная идентификация этих DLL устраняет любые сомнения относительно того, какая именно сборка возникла из DLL.
person
Adam
schedule
27.06.2011