none
如何判断 GAC 是否注册了 DLL? RRS feed

答案

  • Assembly assembly = Assembly.Load("System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");


                Type type = assembly.GetType("System.Web.HttpApplication");
                Console.WriteLine(type);
               
                Console.ReadLine();


    http://feiyun0112.cnblogs.com/
    • 已标记为答案 Neddy Ren 2011年1月13日 5:58
    2011年1月10日 2:13
    版主
  • 您好,可以利用Assembly.GlobalAssemblyCache 属性来判断。

    Assembly assembly = Assembly.Load("您的程序集强名称或弱名称");

    assembly.GlobalAssemblyCache为True则表示在GAC里缓存了。

     

    • 已标记为答案 Neddy Ren 2011年1月13日 5:59
    2011年1月10日 6:11
    版主
  • 通过 

    http://stackoverflow.com/questions/3356207/programmatically-to-check-dll-exists-in-gac-or-not-if-so-display-it-in-grid

    http://www.dreamincode.net/code/snippet2001.htm

    的方法是可以获取。

    但没有其他方法了吗?

    我只想判断,某个 DLL 在不在,不在的话,进行注册。

    您好,Vsenn,

    欢迎您来到MSDN论坛。

    我认为feiyun0112提供的这个方法可以比较轻松地实现您说的功能,如果您要针对更多复杂的操作,建议您学习下微软官方提供的API。

    http://support.microsoft.com/kb/317540/zh-cn

    正如该DOC文章中阐述的:不要使用这些 api 在您的应用程序中执行的程序集绑定或测试的程序集或其他运行的时,开发或设计时操作中是否存在。只有管理工具和安装程序必须使用这些 api。如果您使用 GAC,这直接公开您的应用程序程序集绑定脆弱性降到最低,或可能导致应用程序在.net Framework 的未来版本不正确地工作。

    请您慎重使用这些API提供的功能。

    感谢您的参与。


    Please remember to mark the replies as answers if they help and unmark them if they provide no help. Welcome to the C# Forum! If you have any feedback, please tell us.
    • 已标记为答案 Neddy Ren 2011年1月13日 5:57
    2011年1月10日 8:27
  • 利用 GACUtil 就可以知道某个 Assembly 在不在 GAC 里面了。详细请参考 GACUtil /?。
    Mark Zhou
    • 已标记为答案 Neddy Ren 2011年1月13日 6:00
    2011年1月10日 9:14

全部回复