问题:假设您有一台机器,某些.NET程序集在其上注册,加载和/或正确运行。这个程序集可以通过p/invoke引用非托管DLL,它可以利用COM对象,并且它实际上可以在C++/CLI中实现。如何在一个自动步骤中生成所有必须安装的其他所有DLL(托管和非托管)的列表,以便在另一台计算机上进行注册,加载和/或运行?什么工具(或工具链)将生成.NET程序集所需的完整DLL列表?
部分解决方案#1:可以使用红门的.net reflector标识所有受管引用。
部分解决方案#2:红色栅的.net reflector具有“分析”的功能,将确定通过P利用托管DLL /调用
部分解决方案#3:Depends可以识别由一个EXE导入的托管DLL或DLL。 (并且在其分析模式中,也可以识别动态依赖关系)。
打开:如何在批处理模式下运行这些工具(或其他),而不是手动点击所有依赖链?
奖金问题:什么COM引用 - 是否有任何方法来确定所需的COM对象,然后还跟踪它们的依赖关系?
相关问题:我看到this question覆盖类似的地面。 (但是它没有指定也可以找到非托管的依赖关系,并且接受的答案是.net反射器,它只提供我正在寻找的部分内容。)类似于this one。
我相信,所有的依赖位于可执行文件/程序集的元数据中。恐怕你必须开始解析PE头来提取这些信息。一旦你理解了格式,这不是非常困难。 – 2010-12-04 04:19:17