Какова цель Global Assembly Cache (GAC)? - PullRequest
4 голосов
/ 10 мая 2011

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

Однако, если мне нужно использовать DLL в моем приложении, мне все равно нужно нажать «Добавить ссылку» и добавить из указанного выше пути.Итак, какая польза от GAC, если мне все еще нужно добавить ссылку снова?

1 Ответ

9 голосов
/ 10 мая 2011

От MSDN :

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

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

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

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

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

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

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

...