Возможно, это скорее философский вопрос.
Допустим, у меня есть какая-то платформа, и я решил предоставить библиотеку .NET, которая облегчает использование определенных аспектов этой платформы. Я не хочу, чтобы каждое приложение, которое использует платформу, носило копию библиотеки локально, поэтому я хочу, чтобы она была в GAC (даже со всеми проблемами обслуживания, которые это может подразумевать.)
Я могу заставить фреймворк довольно легко установить библиотеку в GAC, так что каждое приложение не должно этого делать. Но затем, когда я создаю новую версию библиотеки, мой установщик фреймворка должен нести как старую, так и новую библиотеку, чтобы убедиться, что обновления не удаляют старую библиотеку, которая может использоваться некоторым приложением.
Однако, если каждое приложение также устанавливает библиотеку в GAC, начинается подсчет ссылок установщика Windows, и моей среде больше не нужно беспокоиться о переносе старых библиотек в сценарии обновления. Используемая библиотека будет удалена, только если последняя ссылка на установщик Windows исчезнет.
Очевидно, что каждое приложение имеет доступ к библиотеке во время сборки приложения и может легко включить ее в установщик.
Кто-нибудь имеет мнение / точку зрения / опыт одного против другого? Я понимаю, что это не совсем требуемый тип вопроса (поскольку он вызывает обсуждение), но я думаю, что было бы полезно короткое обсуждение.