全局程序集缓存(GAC)的目的是什么?

时间:2011-05-10 03:08:43

标签: .net gac global-assembly-cache

我在GAC中注册了一个DLL。我可以在路径中看到DLL:c:\windows\asssembly;我想这意味着DLL正确注册。

但是,如果我必须在我的应用程序中使用DLL,我仍然需要单击“添加引用”并从上面的路径添加。

那么,如果我仍然需要再次添加引用,那么GAC的用途是什么?

1 个答案:

答案 0 :(得分:9)

From MSDN

  

全局程序集缓存存储专门指定由计算机上的多个应用程序共享的程序集。

换句话说,如果多个应用程序(当然是在同一台机器上)共享DLL,您希望在GAC中注册DLL。

但是,从你的评论中,我想提一些事情:

  1. 您可能错误地注册了DLL;一旦你的DLL在GAC中,你应该能够从所有GACed DLL所在的同一列表中添加它。你不应该通过这条路去做。

  2. 你的DLL在GAC中的事实并不意味着你的代码现在应该可以通过某种自动化来看到它;你仍然需要对它的引用(就像你需要引用你所依赖的所有其他.NET DLL一样,也在GAC中)。

  3. 同样,GAC的优势在于,如果您的3个应用程序需要DLL,您只需部署一次(您将部署GAC,而不是每个应用程序的3次{ {1}}目录)。

  4. 希望这已经解决了一些问题。