可我只是用?:如何將.exe作爲.NET程序集加載?
Assembly.LoadFile
不知道這是要做到這一點的呢?
但是當我嘗試這種方法,它拋出一個Could not load file or assembly "CustomControlLib"
或它的一個依賴。該系統找不到指定的文件。
任何想法?
可我只是用?:如何將.exe作爲.NET程序集加載?
Assembly.LoadFile
不知道這是要做到這一點的呢?
但是當我嘗試這種方法,它拋出一個Could not load file or assembly "CustomControlLib"
或它的一個依賴。該系統找不到指定的文件。
任何想法?
您需要確保依賴項也被加載到應用程序域中。如果它們不是自動定位的,則可以訂閱AppDomain.AssemblyResolve
以便在需要時手動查找和加載程序集。
例如:
private Assembly AssemblyEventHandler(object sender, ResolveEventArgs args)
{
return locatedAssembly;
}
而且,我會考慮使用Assembly.LoadFrom
,特別after reading this具有由nobugz和鏈接一個強大的斷言some好reading(所有過時,但應該還是可以承受大部分。)
感謝當我現在使用LoadFrom時,我得到一個類似的錯誤,但與此'試圖加載一個格式不正確的程序。' – 2011-04-26 23:16:08
@Joan Venge:你在什麼平臺上? x86或x64?這個組件的目標是什麼樣的? – 2011-04-26 23:21:09
我在Win7 x64上。大會說這是x86,所以你是對的,可能是問題。但是,我應該將其更改爲任何cpu或x64? – 2011-04-26 23:45:29
是的,你可以使用Assembly.LoadFile()
。檢查你的路徑。
並檢查以確保任何依賴項都在執行路徑中。 – 2011-04-26 22:29:27
是的,你可以加載一個.net的exe同樣的方式,你會加載DLL。你得到的錯誤是由你的EXE的依賴引起的。確保可以找到這些依賴關係,即在您的程序集搜索路徑中。
他們是但我使用第三方控制,當我打開它的源代碼管理時,它使用了其他dll,這些dll在我的解決方案中不存在,但是這些應該不是自動處理的嗎?因爲程序集已經構建並添加爲我的解決方案的參考。 – 2011-04-26 22:46:42
如果使用Assembly.LoadFrom()
依賴會從那裏組裝所在的目錄加載。
Assembly.LoadFile()
被忽略所有其他DLL和EXE文件在同一文件夾。
什麼是業務問題域?不是,我該如何解決這個問題,我想解決這個問題,但是你想要做什麼的動機是什麼? – 2011-04-26 22:28:50
我想將獨立應用程序加載到另一個應用程序中,該應用程序將充當主應用程序的子應用程序。我可以使用dll來做到這一點,但這使事情變得複雜,例如不得不從獨立的WPF應用程序切換到獨立的控制庫,這是很多工作,並且不容易來回移動。 – 2011-04-26 22:44:48