2010-09-28 105 views
0

我想搜索33 .dll來查找方法的引用,它需要超過10分鐘才能通過所有的dll並找到引用。 有沒有加快速度的方法。更快的搜索方法

這些dll的大約有450類和每個這個類的有大約200種方法每次我跟

步驟:

assemblyName = System.IO.Path.GetFullPath(file) 
assembly = System.Reflection.Assembly.LoadFile(assemblyName) 

Dim types = assembly.GetTypes() 
For Each Type In types 
    methods = Type.GetMethods() 
    For Each method In methods 
    'save method info, class type 
    Next 
Next 
+2

反射是臭名昭着的緩慢。您可能需要重新設計解決方案,因此無需使用反射。你的高級要求是什麼?實現它可能有更好的方法。 – Polyfun 2010-09-28 12:38:24

+1

是的,嚴重的是,你究竟在做什麼*試圖做什麼? – AakashM 2010-09-28 15:09:19

+0

感謝您的回覆...我想要做的就像 - 遞歸查找Visual Studio的所有引用。所以,就像我從找到一個方法的引用開始,然後找到所有調用此方法的方法等的引用,直到我達到了沒有更多方法調用這些方法的地步(也就是說,我到達了UI層,aspx.vb)關於其他方法可以讓我實現這一點的任何建議? – Anshul 2010-09-29 06:17:13

回答

1

你可以通過你的33個庫和存儲的結果你在數據庫中尋找什麼。然後,不要問你的圖書館,問你的數據庫,它會更快,並給你直接敲門的權利......(我的意思是,你可以直接指向好的圖書館和良好的類以獲得更多的信息或instanciate一些對象,...)

我的評論是不是很清楚,所以我更新我的答案。

在啓動新版本之前,您需要使用指向您的課程版本的鍵填寫項目的新值。這樣做時,啓動新應用程序時,您不必等待10分鐘即可獲取您的內容,因爲您已經使用了10分鐘前隱藏的內容填充數據庫。如果您的應用程序重新啓動但您的庫中沒有任何更改,則信息仍將保留在此處,因爲版本將保持不變。

祝你好運,無論如何,你的項目...

+0

感謝您的回答,但是,這些庫不斷更新並不斷更新,因此一旦在數據庫中檢索到數據,存儲數據有點不可行。我將它存儲在類型爲struct的數組中,以便應用程序正在運行,但如果應用程序重新啓動,那麼我們需要再次搜索這些庫。瀏覽所有的方法是必要的。 – Anshul 2010-09-28 12:14:55

+0

嘗試在應用程序重建過程中獲得一些持久性可能確實有點棘手。請參閱我的答案更新.. – Arthis 2010-09-28 14:28:02

1

我認識了很多花哨的工具,包括PostSharpNDepend(這是一個偉大的工具)使用Cecil。它應該比.NET反射更適合某些東西。

試一試......