我正在接管由第三方软件公司制作的应用程序。有一个可执行文件当前无法正常工作,因为它缺少引用的DLL。如何确定应用程序引用的DLL?
答案 0 :(得分:1)
查看Assembly.GetReferencedAssemblies Method。
例如:
var targetAsm = Assembly.Load(File.ReadAllBytes("[TargetPath]"));
foreach(var an in targetAsm.GetReferencedAssemblies())
{
Console.WriteLine(an.ToString());
}
答案 1 :(得分:0)
对于托管程序集,您可以将您拥有的应用程序和程序集加载到dotPeek from JetBrains等反编译器中。您也可以使用.NET SDK提供的ildasm.exe
。这将为您提供托管引用列表。
对于非托管DLL,您需要通过在代码中查找[DllImport]
属性来搜索代码以进行P / Invoke调用。这些应该包含您要查找的导入DLL的名称。
一旦有了一组本机DLL,使用Dependency Walker之类的东西就可以获得你需要的其余非托管DLL。