我可以获取网站引用的所有程序集吗?

Mar*_*tin 4 c# asp.net

基本上,我想在我的MVC站点内的页面上打印一个列表,该列表显示应用程序使用的所有程序集以及版本信息.

我不想只在bin目录中包含那些,我想使用更准确的方法.

所以例子就是

我想知道bin目录中的哪个dll正在被使用.对于其中的每一个,我需要查看它们的依赖程序集(带有它们的版本信息).

我想知道哪些dll是从GAC等引用的.

我希望尽可能多地提供相关信息,因此有关组件所期望的版本以及应用程序所采用的信息将非常有用.

对此有任何标准方法吗?

谢谢,马丁

Kon*_*osa 5

考虑使用BuildManager.GetReferencedAssemblies哪个:

返回所有页面编译必须引用的程序集引用列表.

用法示例:

var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>();
Run Code Online (Sandbox Code Playgroud)

还要注意这种方法与之间的重要区别AppDomain.GetAssemblies().BuildManager.GetReferencedAssemblies收益:

在Web.config文件的assemblies元素中指定的程序集,从App_Code目录中的自定义代码构建的程序集,以及其他顶级文件夹中的程序集.

while AppDomain.GetAssemblies()只返回当前加载的程序集.