在windows下开发好应用程序后,碰到动态加载的dll就没办法用Dependency Walker来看都需要哪些dll了,而且同一个文件名不同版本的情况更复杂,比如调试版本与发布版本的同名dll。windows下用C#写小工具还是很方便的,直接上代码^_^
class Program
{
static void Main(string[] args)
{
if (args.Length < 1) return;//需先运行要部署的程序,命令参数为应用程序的进程名称(不带.exe后缀)
Process[] p = Process.GetProcessesByName(args[0]);
if (p.Length != 1) {
Console.Error.WriteLine("got " + p.Length + " process");
return;
}
foreach (ProcessModule module in p[0].Modules) {
if (module.FileName.StartsWith("C:\\WINDOWS\\system32\\", true,null)) continue;//忽略系统自带dll
Console.Out.WriteLine(module.FileName);
}
}
}