我有一個可執行文件,比如abc.exe,它引用a.dll(與可執行文件相同的文件夾),b.dll(隨機文件夾中)和c.dll(隨機文件夾中)。使用System.Diagnostics.Process來反映引用的程序集?
但是,這些DLL不一定與可執行文件(或GAC)位於同一目錄中,這是我無法做的任何事情。
我試過使用System.Reflection.Assembly來試圖找到abc.exe使用的所有引用程序集。
foreach (AssemblyName an in assembly.GetReferencedAssemblies())
{
Assembly.Load(an);
}
這似乎是加載可執行文件目錄(a.dll)中的程序集,但並不出人意料地拋出其他文件沒有發現異常。
我的想法是使用的System.Diagnostics.Process加載過程,然後反思的過程,因爲這應該告訴我在哪裏可以找到B.DLL和c.dll(?)
不過,我不不知道如何去做。這是否可能,如果是這樣,那該怎麼辦?謝謝!
如果exe或dll的分發者沒有將依賴關係放在相同的位置或GAC中作爲調用它們的文件,那麼應用程序可能會從dll或exe中使用Assembly編碼的指定位置動態地加載它們解決...如果是這種情況,我懷疑你會通過反射找到位置... – devHead
這是正確的唐,有一段代碼捕捉程序集沒有發現異常(不知道它被稱爲是什麼)和引用到一個文本文件來查找特定的位置。 我不想做的就是依賴這個文本文件。在這種情況下不可能嗎? – r3su
你看到了嗎? http://msdn.microsoft.com/en-us/magazine/cc163641.aspx – devHead