C# 如何查找引用特定dll的所有程序集?
我有一个包含大量DLL的目录。我需要找到所有引用特定C# 如何查找引用特定dll的所有程序集?,c#,dependencies,assemblies,ildasm,C#,Dependencies,Assemblies,Ildasm,我有一个包含大量DLL的目录。我需要找到所有引用特定dll的文件 我正在考虑以下解决方案: 循环程序集并使用ildasm 将清单转储到文本文件中 在文本文件中搜索所需的程序集名称 然而,我觉得这个解决方案大错特错。有没有更好的方法来实现它 您可以为此编写一个小工具,使用反射查找引用的程序集: string[] fileNames = ...; // get all the filenames foreach (string fileName in fileNames) { var ass
dll
的文件
我正在考虑以下解决方案:
ildasm
清单
转储到文本文件中然而,我觉得这个解决方案大错特错。有没有更好的方法来实现它 您可以为此编写一个小工具,使用反射查找引用的程序集:
string[] fileNames = ...; // get all the filenames
foreach (string fileName in fileNames) {
var assembly = System.Reflection.Assembly.ReflectionOnlyLoadFrom(fileName);
var referencedAssemblies = assembly.GetReferencedAssemblies();
foreach (var assemblyName in referencedAssemblies) {
// do your comparison
}
}
根据Microsoft documentationnn AppDomain.CurrentDomain.GetAssemblys()获取已加载到此应用程序域的执行上下文中的程序集 似乎您需要将加载所需组件的策略从使用appdomain更改为在应用程序文件夹中查找DLL
我发现了一个关于类似问题的讨论下载AsmSpy.exe,它可以选择列出所有程序集和程序集中的所有引用
下载IlSpy.exe,打开要查看其引用的程序集,它将列出所有引用的程序集
您可以使用System.Reflection.Assembly.GetReferencedAssemblies谢谢!好多了indeed@Dirk,如何从GAC加载程序集并获取引用?