Какова цель Global Assembly Cache (GAC)?

Я зарегистрировал DLL в GAC. Я могу видеть DLL в пути: c:\windows\asssembly; Я предполагаю, что это означает, что DLL правильно зарегистрирована.

Однако, если мне нужно использовать DLL в моем приложении, мне все равно нужно нажать "Добавить ссылку" и добавить по указанному выше пути.

Итак, какая польза от GAC, если мне все еще нужно добавить ссылку снова?

1 ответ

Решение

Из MSDN:

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

Другими словами, вы хотите зарегистрировать вашу DLL в GAC, если несколько приложений (на одном компьютере, конечно) будут совместно использовать DLL.

Однако из ваших комментариев я хочу упомянуть еще несколько вещей:

  1. Возможно, вы неправильно зарегистрировали DLL; как только ваша DLL окажется в GAC, вы сможете добавить ее из того же списка, в котором находятся все библиотеки GACed. Вы не должны делать это по пути.

  2. Тот факт, что ваша DLL находится в GAC, не означает, что ваш код теперь должен видеть ее каким-то автоматическим способом; вам все еще нужна ссылка на него (точно так же, как вам нужна ссылка на все другие библиотеки.NET DLL, от которых вы зависите, которые также находятся в GAC).

  3. Опять же, преимущество GAC состоит в том, что если 3 из ваших приложений нуждаются в DLL, вам придется развернуть ее только один раз (вы развернете ее GAC, а не 3 раза для каждого приложения). bin каталог).

Надеюсь, это немного прояснилось.

Другие вопросы по тегам