Как ссылаться на общие сборки, которые все еще находятся в стадии разработки (.NET)
Я отвечаю за разработку и поддержку набора общих сборочных структур, которые используются для создания приложений нашего продукта. Эти сборки являются относительно новыми и находятся в состоянии постоянного изменения по мере внедрения новых функций и т. Д. В результате их весьма часто перестраивают и перераспределяют довольно часто. Я ожидал бы, что это уменьшится, поскольку собрания стабилизируются, но это - то, что это сегодня.
В данный момент сборки помещаются в общую папку, в которой проекты разработки могут ссылаться на одни и те же сборки. Применение обновлений так же просто, как замена файлов, и проекты разработки автоматически фиксируют изменения при следующей загрузке и сборке.
У меня проблема в том, что у нас может быть несколько "слоев" сборок, построенных на платформе - например, у нас есть библиотека Core, общая для всех приложений, и библиотека Server, которая ссылается на Core и является общей для всех приложений сервера. Все зависимости также необходимо перестраивать каждый раз при обновлении сборок фреймворка, что делает эту задачу очень большой. Я не верю, что смогу использовать GAC, потому что для этого потребуется, чтобы все разработчики обновляли свои системы каждый раз, когда выпускается новая версия.
Я исследовал политику издателей, но у меня есть некоторые сомнения, что это решит мою проблему по нескольким причинам:
С одной стороны, я не хочу воссоздавать файл каждый раз, когда перестраиваю свои сборки фреймворка - есть ли способ автоматизировать этот процесс?
Мне не ясно, требует ли это, чтобы собрания входили в GAC. Как я уже сказал, я не хочу заставлять моих разработчиков переустанавливать, обновлять и т. Д. Каждый раз, когда мы выпускаем новую версию сборок.
У меня нет никакого контроля над настройкой и настройкой сети, поэтому необходимо избежать всей проблемы "доверия", поместив файлы в общий сетевой ресурс. Кроме того, многие наши разработчики работают иногда подключенным образом, и мы хотели бы, чтобы файлы были доступны для них при отключении.
Цель состоит в том, чтобы сделать обновление этих сборок прозрачным для наших разработчиков приложений, которые их потребляют. Мы, несомненно, установим эти сборки в GAC на целевой машине, когда приложение будет установлено, но мы не хотим делать это в целях разработки. Также нецелесообразно включать проекты в решение каждого приложения, так как они разрабатываются разными командами.
Я не могу себе представить, что я одинок в этих требованиях, и надеюсь, что кто-то поделится своим опытом и мудростью, чтобы привести меня к решению. Спасибо!
2 ответа
NuGet решил эту проблему. Распространяя общие сборки, каркасы и т. Д. В виде пакетов NuGet из частного репозитория в нашей сети, мы можем легко публиковать обновления и применять их к клиентскому коду в зависимости от ситуации.
Вам не обязательно устанавливать сборки в GAC - ничего в вашей настройке не требуется.
Основная проблема здесь заключается в том, чтобы убедиться, что сборка принудительно перестраивает все ее зависимости и что все они размещаются в общем расположении.
Самым простым вариантом здесь, вероятно, будет наличие сервера сборки, который перестраивает все, когда обновляется одна из общих сборок. Это также имеет преимущество, заключающееся в возможности запуска других "сценариев" в сборке, таких как выполнение метрик кода, статический анализ кода и т. Д., При каждом включении сборки.
После этого вы можете просто скопировать все данные на общий сервер. Если проекты ссылаются из общего расположения и прямо говорят, что не нужно ограничиваться определенной версией, все должно работать просто отлично.