如何知道我是否从GAC运行?

时间:2009-07-17 14:09:56

标签: .net gac

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

3 个答案:

答案 0 :(得分:8)

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

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

...或:

bool loadedFromGac = Assembly.GetExecutingAssembly().GlobalAssemblyCache;

答案 1 :(得分:3)

使用AssembyInfo类查找应用程序的已加载程序集。返回的Assembly对象有一个名为GlobalAssemblyCache的属性,用于指示您需要的内容。

MSDN Docs for Assembly

答案 2 :(得分:0)

如果因任何原因更新源代码以包含此选项,请尝试使用Fusion日志查看器(fuslogvw.exe)。作为Visual Studio工具的一部分(从Windows上的Visual Studio菜单组打开工具命令提示符以在路径上显示这些工具命令提示符),Fusion Log Viewer会记录应用程序加载的所有程序集以及它们的加载位置。

多年来,它帮助我找到了与拾取错误版本的装配体,来自意想不到的地方的装配等相关的一些问题。提供的信息量可能非常大,但它为您的应用程序或其他任何人提供了关于加载了哪些DLL的明确答案。

以下是Microsoft文档:https://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.110).aspx