2010-01-10 57 views
3

有用於查看Windows上的DLL/EXE文件的工具,如Dependency Walker,dumpbin,ildasm。我想從代碼分析DLL,尤其是託管和非託管的依賴關係。是否有任何(.NET)庫用於分析類似的功能?用於分析可執行文件的庫

我想用它來驗證我們在我的公司正在創建的安裝程序中部署正確的DLL。我們有超過200個DLL。

回答

3

可以使用Cecil庫,分析管理的可執行文件。如果你想要一個規則引擎來檢查你的應用程序,你可以使用使用Cecil的Gendarme

+0

塞西爾看起來像託管代碼的好庫,我將不得不嘗試使用ut – Arve 2010-01-11 14:35:20

+0

你應該透露你是塞西爾的作者。 – jason 2010-01-11 19:56:55

+0

@Jason你的意思是,就像在他的個人資料中提供該信息? Jb太狡猾了,我很高興你能把事情做好。 – 2010-01-11 23:46:49

1

如果您想進行自己的依賴項檢查,可以爲託管代碼程序集編寫用於Visual Studio的代碼分析(FxCop)插件。

Tutorial on writing your own Code Analysis rule

如果你想預建的工具可以使用:

  1. 內置的代碼分析(的FxCop)在Visual Studio工具。
  2. NDepend
+0

在FxCop工具包中可能有一些東西可以用來創建我可以使用的規則。謝謝。 至於NDepends,據我所知它是一個獨立的工具,而不是我可以從我的程序輕鬆調用的東西。 – Arve 2010-01-10 21:02:58

1

我希望這不會破壞任何規則,但你可能想看看我已經開發了一個庫,可以看到其他的東西堆中的形象的進口和出口。從這裏下載源代碼:https://sourceforge.net/projects/processhacker/files。提取ProcessHacker.Common和ProcessHacker.Native,將它們包含在您的解決方案中,並引用它們。

下面是如何使用它:

using ProcessHacker.Native.Image; 

MappedImage image = new MappedImage("file.exe"); 

for (int i = 0; i < image.Imports.Count; i++) 
{ 
    Console.WriteLine("Imports for " + image.Imports[i].Name + ":"); 

    for (int j = 0; j < image.Imports[i].Count; j++) 
     Console.WriteLine(image.Imports[i][j].Name); 
} 

我不知道該如何處理,雖然與.NET引用。

+0

我會盡力的。謝謝。 – Arve 2010-01-10 21:06:51

+0

我試過了。它在原生DLL引用上運行得非常好。太糟糕了,我不能給兩個「批准的答案」在這裏.. – Arve 2010-01-12 16:02:15

+0

我很高興它的工作原理。不要擔心試圖接受兩個答案,我不介意。 – wj32 2010-01-12 19:21:09