Установка общих сборок в GAC для разработки и сборки - PullRequest
2 голосов
/ 18 июня 2009

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

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

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

Тогда вы, вероятно, сделали бы то же самое для своего сервера сборки. Однако единственная проблема, которую я вижу с этим, состоит в том, что у вас есть приложение, которое использует версию 2.0 блоков приложения. Позже вы обновите его до версии 3.1. В какой-то момент вам может понадобиться пересоздать более раннюю версию этого приложения, чтобы протестировать обнаруженную клиентом ошибку, но при повторном создании сборки он будет использовать версию 3.1 блока приложения, а не 2.0, против которой оно изначально было создано. Это правда, или старый файл проекта будет по-прежнему ссылаться на более старую версию DLL, если она находится в GAC?

Что вы думаете / думаете по этому конкретному вопросу?

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

Ответы [ 2 ]

2 голосов
/ 18 июня 2009

Что вы думаете / думаете по этому конкретному вопросу?

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

Это служит нескольким целям:

  • Проекты являются атомарными, и они не зависят от наличия конкретной версии какой-либо библиотеки в GAC. Так что легко воспроизвести предыдущую версию, просто проверив ее. И все будет работать.
  • Для этого требуется только чистый компьютер для разработки (со всеми установленными пакетами обновления .NET и основными SDK), чтобы начать проверку проекта, запустить полную интеграционную сборку и начать работать.

Когда нужно управлять более чем 10 различными проектами, это начинает иметь определенное значение.

0 голосов
/ 18 июня 2009

Старое приложение выберет более старую версию сборки из GAC при условии, что вы не перестроите старое приложение с более новой сборкой. Каждая сборка хранит эту информацию в своем собственном манифесте, к которому она относится. Если вы откроете сборку с помощью ILDasm tool , вы сможете детально проверить манифест сборки, в котором хранится информация обо всех упомянутых сборках.

...