【问题标题】:Can I get all assemblies referenced by a website我可以获取网站引用的所有程序集吗
【发布时间】:2014-04-25 10:32:30
【问题描述】:

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

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

所以例子是

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

我想知道 GAC 等引用了哪些 dll。

我想要尽可能多的信息,因此程序集预期的版本以及应用程序正在获取的信息等信息会很有用。

有什么标准方法可以解决这个问题吗?

谢谢, 马丁

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    考虑使用BuildManager.GetReferencedAssemblies

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

    示例用法:

    var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>();
    

    还要注意此方法与AppDomain.GetAssemblies() 之间的重要区别。 BuildManager.GetReferencedAssemblies 返回:

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

    AppDomain.GetAssemblies() 仅返回当前加载的程序集。

    【讨论】:

    • 这是否也会返回被引用但来自 GAC 的程序集。
    • @Martin,是的。当然最简单的方法是尝试一下:)
    • 我不同意,询问知道答案的人比构建和测试解决方案更简单、更容易。这样可以减少浪费的时间。
    【解决方案2】:

    试试这个:

    var assemblies = AppDomain.CurrentDomain.GetAssemblies();
    

    【讨论】:

      猜你喜欢
      • 2019-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2020-08-31
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      相关资源
      最近更新 更多