問題:假設您有一臺機器,某些.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