лучше зарегистрировать DLL в GAC или ссылаться на них из папки bin в ASP.NET - PullRequest
3 голосов
/ 22 мая 2009

и если ответ "это зависит", не могли бы вы дать краткое объяснение, почему?

Ответы [ 3 ]

2 голосов
/ 28 июля 2009

Рискуя понижение голосов, я собираюсь опровергнуть общественное мнение и сказать, что GAC следует использовать только в качестве крайней меры (один из примеров, который я могу вспомнить, - это когда вы используете biztalk, который не ' я не дам вам папку bin для каждого приложения).

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

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

Но забыв о проблеме с несколькими серверами, скажем, у вас есть сервер с 10 приложениями, использующими одну и ту же сборку. Вы обнаружите проблему с этой сборкой, которая затрагивает только два приложения. Обновляете ли вы сборку для всех 10, то есть вам придется протестировать все 10, и вы могли бы сломать несколько других работающих приложений? Или вы просто обновляете сборку для сломанных приложений и обновляете ее для других в течение следующего цикла разработки? Если вы предпочитаете последний подход, я бы сказал, что GAC следует избегать.

2 голосов
/ 22 мая 2009

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

PS: Неужели вы не получили ссылку из папки bin в вашем вопросе - какая это папка bin?

0 голосов
/ 22 мая 2009

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

Кроме того, если сборка имеет строгое имя, подписанное, то более эффективно загружать ее из GAC. Это потому, что для того, чтобы в первую очередь попасть в GAC, было проверено строгое имя, что означает, что вашему приложению не нужно делать это снова при загрузке. Если вы загружаете сборку со строгим именем из локальной папки, тогда ее строгое имя будет проверяться каждый раз (это не займет много времени, но все складывается). Вы можете устанавливать только сборки со строгим именем в GAC, и для этого вам потребуются права администратора.

...