2010-12-03 44 views
2

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

+0

我相信,所有的依賴位於可執行文件/程序集的元數據中。恐怕你必須開始解析PE頭來提取這些信息。一旦你理解了格式,這不是非常困難。 – 2010-12-04 04:19:17

回答

0

你根本無法,至少不能以可靠的方式。安裝軟件包允許在安裝時執行文件放置,註冊表項和其他操作。

除非該項目爲XCOPY deployed,否則無法確定並確保安裝新的正確安裝所需的內容。

+0

已確認 - 我已更改標題和問題說明以指定「DLL」(這是我的意思)而不是「組件」(可能被解釋爲意指文件,註冊表項等)。 – Eric 2010-12-04 03:54:51