如何确定.NET程序集(组件)位置?

时间:2015-10-30 16:50:20

标签: .net dll

我的应用程序正在使用System.ServiceModel类引用。在目标计算机上,我的应用程序工作,没有Visual Studio(或任何其他开发环境),有很多System.servicemodel.dll文件。我想确定我的应用程序正在使用哪个.dll。有什么方法可以搞清楚吗?

1 个答案:

答案 0 :(得分:0)

查找程序集中定义的类型,使用该类型获取Assembly对象,然后使用Location属性获取从硬盘驱动器加载的路径。

var path = typeof(System.ServiceModel.ServiceHostBase).Assembly.Location;
//returns "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel\v4.0_4.0.0.0__b77a5c561934e089\System.ServiceModel.dll" for my machine.

注意,如果您正在使用其他程序集,并且使用Assembly.Load(Byte[])或其他类似的“无路径”方式加载程序集来加载程序集,则location属性将返回一个空字符串。在这种情况下,您可以使用Assembly.CodeBase来获取加载程序集的调用者的位置。