Рискуя понижение голосов, я собираюсь опровергнуть общественное мнение и сказать, что GAC следует использовать только в качестве крайней меры (один из примеров, который я могу вспомнить, - это когда вы используете biztalk, который не ' я не дам вам папку bin для каждого приложения).
Изначально GAC кажется хорошим способом обмена файлами между несколькими приложениями. Но что происходит, когда вы хотите обновить одно из этих приложений? Вам нужно либо рискнуть сломать все приложения на сервере, которые его используют, либо получить в GAC несколько версий. Несколько версий в GAC не лучше, чем разные версии, упакованные с отдельными приложениями, на самом деле я бы сказал, что это более запутанно.
Когда вы работаете в веб-ферме, вы получаете один GAC на сервер, поэтому развертывание приложения на новом сервере, добавленном в ферму, становится более сложным, если используется GAC. Вы также теряете преимущество наличия единственной копии сборки на вашем сервере.
Но забыв о проблеме с несколькими серверами, скажем, у вас есть сервер с 10 приложениями, использующими одну и ту же сборку. Вы обнаружите проблему с этой сборкой, которая затрагивает только два приложения. Обновляете ли вы сборку для всех 10, то есть вам придется протестировать все 10, и вы могли бы сломать несколько других работающих приложений? Или вы просто обновляете сборку для сломанных приложений и обновляете ее для других в течение следующего цикла разработки? Если вы предпочитаете последний подход, я бы сказал, что GAC следует избегать.