给定一个可以安装在GAC(生产)或不安装(开发)的类库DLL,我需要知道执行的程序集是否从GAC运行。我怎么知道这个?
答案 0 :(得分:8)
您是否尝试过检查Assembly.GlobalAssemblyCache
属性?
bool loadedFromGac = this.GetType().Assembly.GlobalAssemblyCache;
...或:
bool loadedFromGac = Assembly.GetExecutingAssembly().GlobalAssemblyCache;
答案 1 :(得分:3)
使用AssembyInfo类查找应用程序的已加载程序集。返回的Assembly对象有一个名为GlobalAssemblyCache的属性,用于指示您需要的内容。
答案 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