【发布时间】:2009-07-17 14:09:56
【问题描述】:
给定一个可以安装在 GAC(生产)或不(开发)上的类库 DLL,我需要知道正在执行的程序集是否从 GAC 运行。我怎么知道?
【问题讨论】:
给定一个可以安装在 GAC(生产)或不(开发)上的类库 DLL,我需要知道正在执行的程序集是否从 GAC 运行。我怎么知道?
【问题讨论】:
您是否尝试检查Assembly.GlobalAssemblyCache 属性?
bool loadedFromGac = this.GetType().Assembly.GlobalAssemblyCache;
...或:
bool loadedFromGac = Assembly.GetExecutingAssembly().GlobalAssemblyCache;
【讨论】:
使用 AssembyInfo 类找出为您的应用加载的程序集。返回的 Assembly 对象有一个名为 GlobalAssemblyCache 的属性,它指示您需要什么。
【讨论】:
如果出于某种原因无法更新源代码以包含此选项,请尝试使用 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
【讨论】: