我的應用程序根據.NET應用程序的代碼結構生成圖表。 Assembly.LoadFile
的作品,但只有當我的應用程序已被放入與我正在加載的程序集相同的文件夾(似乎是由於引用的程序集);如果它不在同一個文件夾中,則如果加載的程序集的依賴項不在GAC中,則會得到ReflectionTypeLoadException
異常。無法加載引用程序集以進行反射
我試過用Assembly.ReflectionOnlyLoadFrom
代替。
AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += ResolveAssembly;
Assembly loadedAssembly = Assembly.ReflectionOnlyLoadFrom(FileName);
有以下事件:
Assembly ResolveAssembly(object sender, ResolveEventArgs args){
return Assembly.ReflectionOnlyLoad(args.Name);
}
但是ResolveAssembly
只拿到呼籲System
,System.Windows.Forms
和System.Drawing
。它沒有被請求OpenTK.dll
,OpenTK.GLControl.dll
和其他引用的程序集。當我撥打loadedAssembly.GetTypes()
時,它也拋出了ReflectionTypeLoadException
。
我怎樣才能讓它加載引用的程序集,以便我不必強制將我的應用程序放入與其檢查的程序集相同的文件夾中?
更新:
當我打電話Assembly.ReflectionOnlyLoadFrom
,我可以用GetReferencedAssemblies()
觀察從裝配的引用。當我檢查AppDomain.CurrentDomain.ReflectionOnlyGetAssemblies()
時,我注意到只裝載了一個組件(最初指定的一個)。換句話說,引用的程序集並不會被加載(儘管掛接了ReflectionOnlyAssemblyResolve
)。
也許它們被加載到一個單獨的應用程序域? – animaonline 2013-05-07 08:54:49