Как ссылаться на общие сборки, которые все еще находятся в стадии разработки (.NET) - PullRequest
2 голосов
/ 14 сентября 2009

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

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

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

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

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

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

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

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

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

Ответы [ 2 ]

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

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

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

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

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

0 голосов
/ 17 ноября 2011

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

...