2009-09-14 1 views
2

Я отвечаю за разработку и обслуживание набора общих сборочных сборок, которые используются для создания наших прикладных программ. Эти сборки являются относительно новыми и в состоянии изменения, когда внедряются новые функции и т. Д. В результате их нетрудно перестроить и перераспределить несколько раз. Я бы ожидал, что это уменьшится, поскольку сборки будут стабилизированы, но это то, что сегодня.Как ссылаться на общие сборки, которые все еще находятся в разработке (.NET)

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

Проблема заключается в том, что у нас может быть несколько «слоев» сборок, построенных на основе фреймворка - например, у нас есть библиотека Core, общая для всех приложений и библиотека сервера, которая ссылается на Core и используется всем приложением Server , Все зависимостей также необходимо перестраивать каждый раз, когда сборки фреймов обновляются, что делает эту задачу очень большой. Я не верю, что могу использовать GAC, потому что это потребует, чтобы все разработчики обновляли свои системы каждый раз, когда выпускается новая версия.

Я исследовал политики издателя, но есть некоторые сомнения, что это будет решить мою проблему для нескольких причин:

  • С одной стороны, я не хочу, чтобы воссоздать файл каждый раз, когда я восстановить мой рамки сборки - есть ли способ автоматизировать этот процесс?

  • Мне непонятно, требуется ли сборку в GAC. Как я уже сказал, я не хочу, чтобы мои разработчики переустанавливали, обновляли и т. Д. Каждый раз, когда мы выпускаем новую версию сборок.

  • У меня нет никакого контроля над настройкой и настройкой сети, поэтому необходимо избегать всей проблемы «доверия», поместив файлы в общий сетевой ресурс. Кроме того, многие из наших разработчиков работают по-разному, и мы хотим, чтобы файлы были доступны для них при отключении.

Целью было бы сделать обновление этих сборок прозрачным для разработчиков приложений, которые их потребляют. Мы, без сомнения, установим эти сборки в GAC на целевой машине, когда приложение будет установлено, но мы не хотим делать это для целей разработки. Также не разумно включать проекты в решение каждого приложения, потому что они разрабатываются различными командами.

Я не могу себе представить, что я один в этих требованиях и надеюсь, что кто-то может поделиться своим опытом и мудростью, чтобы направлять меня к решению. Благодаря!

ответ

0

NuGet решил эту проблему. Распространяя общие сборки, фреймворки и т. Д. Как пакеты NuGet из частного репозитория в нашей сети, мы можем легко публиковать обновления и применять их к клиентскому коду, если это необходимо.

1

Вам не обязательно устанавливать сборки в GAC - ничто в настройках не требует этого.

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

Самый простой вариант здесь, вероятно, состоит в том, чтобы иметь сервер сборки, который перестраивает все, когда обновляется одна из общих сборок. Это также имеет преимущество, заключающееся в возможности запуска других «скриптов» в сборке, таких как выполнение метрик кода, анализ статического кода и т. Д. Всякий раз, когда проверяется сборка.

Теперь вы можете просто создать сервер сборки к общему месту.Если ссылки проектов из общего местоположения и явно говорят, что они не ограничивают конкретную версию, все должно работать нормально.

+0

Ознакомьтесь с http://stackoverflow.com/questions/tagged/continuous-integration – TrueWill

+0

Да, CI делает это легко. –