【问题标题】:How to know whether I'm running from the GAC or not?如何知道我是否从 GAC 竞选?
【发布时间】:2009-07-17 14:09:56
【问题描述】:

给定一个可以安装在 GAC(生产)或不(开发)上的类库 DLL,我需要知道正在执行的程序集是否从 GAC 运行。我怎么知道?

【问题讨论】:

    标签: .net gac


    【解决方案1】:

    您是否尝试检查Assembly.GlobalAssemblyCache 属性?

    bool loadedFromGac = this.GetType().Assembly.GlobalAssemblyCache;
    

    ...或:

    bool loadedFromGac = Assembly.GetExecutingAssembly().GlobalAssemblyCache;
    

    【讨论】:

      【解决方案2】:

      使用 AssembyInfo 类找出为您的应用加载的程序集。返回的 Assembly 对象有一个名为 GlobalAssemblyCache 的属性,它指示您需要什么。

      MSDN Docs for Assembly

      【讨论】:

        【解决方案3】:

        如果出于某种原因无法更新源代码以包含此选项,请尝试使用 Fusion Log Viewer (fuslogvw.exe)。作为 Visual Studio 工具的一部分(从 Windows 上的 Visual Studio 菜单组打开工具命令提示符以将这些放在您的路径中),Fusion Log Viewer 记录应用程序加载的所有程序集,以及它们的加载位置。

        多年来,它帮助我解决了许多与错误版本的程序集、意外位置的程序集等相关的问题。所提供的信息量可能是压倒性的,但它为您的应用程序或其他任何人提供了关于加载哪些 DLL 的明确答案。

        这是微软文档:https://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.110).aspx

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-05
          • 2017-09-14
          • 1970-01-01
          • 1970-01-01
          • 2015-04-28
          • 2014-03-03
          • 1970-01-01
          相关资源
          最近更新 更多