Как ссылаться на общие сборки, которые все еще находятся в стадии разработки (.NET)

StackOverflow https://stackoverflow.com/questions/1422899

  •  07-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

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

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

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

Это было полезно?

Решение 2

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top