我正在研究一個簡單的類瀏覽器對話框,該對話框允許用戶打開程序集並從中選擇靜態方法。但是,在某些情況下程序集的依賴關係丟失。在ReflectionOnlyLoad期間忽略缺失的依賴關係
由於我只需要方法名稱而不是其完整的原型,有什麼方法可以通過調用Assembly.ReflectionOnlyLoadFrom時引發的FileNotFoundException?我目前正在處理AppDomain.ReflectionOnlyAssemblyResolve但如果我返回空值然後我得到以下消息一個FileLoadException:
無法解析依賴於組裝「...」,因爲它沒有被預裝。在使用ReflectionOnly API時,必須通過ReflectionOnlyAssemblyResolve事件按需預加載或加載相關程序集。
我知道這一定是可能的,因爲.NET Reflector允許您跳過未解決的依賴關係。不過,我開始認爲Reflector可能會手動解析程序集,而不是將其加載到CLR中並使用標準反射。也許它使用Mono項目中的Cecil之類的東西。
我懷疑反射器是使用塞西爾 - 它早於它,並從內部MS來了。我也懷疑它使用CCI。 Methinks Lutz只是一個上帝,他將所有這些東西都放在了睡眠中(儘管他最後很累了)! – 2009-08-27 07:48:25