2013-12-11 132 views
0

我遇到的情況,我的客戶是WPF應用讓我們說W,有3個總成說ABC未暴露於W,因此3個組件在一個具體的工廠引用,說F這創建所需的實例並提供給W如何在另一個引用程序集中加載引用程序集?

我在F中使用反射來生成3個對象。

下面是代碼,如果我在W引用A

return (IClass)Activator.CreateInstance(Assembly.Load("A").GetType("A.AClass"), 
BindingFlags.NonPublic | BindingFlags.Instance, null, null, null); 

代碼工作,但是當AF被引用不起作用(System.IO.FileNotFound Exception)(我十字Assembly.GetExecutingAssembly().GetReferencedAssemblies()檢查和A未裝載)。

我看到如果不需要,可能不會加載Assembly。但是,我的WPF客戶端如何加載程序集。如果這是預期的行爲,我會找到當前的Directory路徑並將其附加A.dll。 有什麼想法嗎?

+0

您是否嘗試過使用['AppDomain.AssemblyResolve'](http://msdn.microsoft.com/pl-pl/library/system.appdomain.assemblyresolve(v = vs.110).aspx)處理程序? –

+0

這不是一個後備技術,我的意思是我能夠實際獲得原始所需的程序集? –

+0

據我所知,你知道這需要大會,所以你可以通過'Assembly.LoadFrom'提供它 –

回答

1

我懷疑在構建解決方案時,文件不會被複制到AppDomain.CurrentDomain.BaseDirectory。如果沒有參考,您需要手動確保將所需的DLL複製到正確的位置。

看到BasconSah評論上面的建議。

相關問題