如何以编程方式获取所有 .NET 程序集的列表?

How to get list of all .NET assemblies programmatically?

我有一个应用程序要在运行时编写 动态程序集,所以我需要一个系统中所有程序集的列表,例如 Visual Studio 参考经理

我的问题是:如何通过自身 .NET 语言而不搜索文件夹文件来获取所有 .NET 程序集 的列表?

注:
我知道我可以从以下位置找到任何程序集:
C:\Windows\assembly\GAC\...

C:\Windows\Microsoft.NET\Framework
但我不确定通过这种方式在所有系统中找到该程序集!
因为我无法在所有计算机上访问这些文件夹。所以我的应用程序只能通过 .NET 代码才能获取这些程序集的名称。另一个问题是这个文件夹在所有计算机上的路径都不是固定的,可能会有所不同。

您可以直接从代码中执行 gacutil.exe/i 命令来获取所有 GAC 程序集的列表。您可以在此处查看示例代码:https://social.msdn.microsoft.com/Forums/vstudio/en-US/d9283b0f-94b7-4fe2-9196-92f81c6e7ba0/obtaining-list-of-assemblies-present-in-gac?forum=clr

在我的 PC 上 Visual Studio 只需读取此目录的内容即可显示此信息:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5

作为测试,我删除了Accessibility.dll

YMMV

您真的应该看看 Codeplex 上的 GAC Manager 项目:
https://gacmanager.codeplex.com/
将其用于您的目的将非常有帮助且很好。在项目页面上,您还可以找到一个工作示例(无论如何我都没有尝试过 .Net 4.6,希望它也适用于这个)