1
A
回答
1
有很多方法可以做到這一點這種方法。有關運行時如何查找程序集的詳細說明,請參閱How runtime locates assemblies。
可以在app.config
通過codeBase
元素指定精確的位置:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="neutral" />
<codeBase version="2.0.0.0"
href="http://www.litwareinc.com/myAssembly.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
如果您的組件在應用程序的子目錄下,那麼你可以使用probing
元素:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
如果所有的失敗,你可以始終寫入事件處理程序並將其附加到AppDomain.AssemblyResolve以顯式加載程序集。甚至有SO的例子。
1
我會嘗試使用Assembly.LoadFrom(string)
。這個超載需要通往組件的路徑,並允許你通過反射來利用它。
你可以組裝這樣的:
var sampleAssembly = Assembly.LoadFrom("c:\\Sample.Assembly.dll");
var method = sampleAssembly.GetTypes()[0].GetMethod("Method1");
然後調用使用MethodInfo.Invoke()
+0
謝謝你Nate。我們可以在沒有動態加載的情況下達到同樣的效果嗎 – user7380740
相關問題
- 1. 無法加載C++ dll,甚至VB.Net exe和.dll在同一個文件夾中
- 2. 多文件上傳(甚至文件夾)
- 3. 在tomcat上部署戰爭到另一個文件夾名稱
- 4. 當一個DLL文件引用另一個DLL文件時,使用PowerShell中的兩個DLL文件
- 5. 從另一個DLL引用一個DLL
- 6. 的Android甚至小部件
- 7. 不能在c中引用另一個dll文件中的dll文件#
- 8. ClickOnce爲每個DLL部署多個文件夾
- 9. 如何引用部分表單另一個文件夾?
- 10. 使用mklink將一個文件夾中的dll文件從一個文件夾粘貼到另一個
- 11. 引用dll不在bin文件夾中
- 12. MS部署 - 將一個文件夾部署到網站
- 13. 部署VB.NET程序無法在同一個文件夾中找到dll
- 14. .Net DLL引用另一個DLL
- 15. 部署後同步文件夾
- 16. 部署後更改文件夾權限
- 17. 在另一個文件夾
- 18. 在SharePoint中部署引用DLL
- 19. Git忽略沒有`.gitignore`的文件夾甚至存在
- 20. 與mod_rewrite的文件夾,甚至是改寫存在
- 21. InstallShield 2012從臨時的asp.net文件夾部署dll
- 22. 試圖從另一個子文件夾引用1個子文件夾
- 23. MySQL的甚至索引
- 24. 在CAB文件內部署系統DLL
- 25. 創建一個引用另一個.dll的.dll
- 26. 部署另一臺機器後的空引用錯誤
- 27. 調用在另一個文件夾
- 28. 大文件的索引索引內容(甚至大於GB)
- 29. 部署LocalState文件夾
- 30. iPhone:NSLocalizedString從英文.strings文件讀取甚至當另一個lang被設置時
什麼如果它在應用程序本身以外的其他文件夾中,並且該DLL的版本經常更改? – user7380740
然後你將不得不使用'AppDomain.AssemblyResolve'路線。在應用程序入口處的某處,註冊處理程序將在加載程序無法通過常規機制加載程序集時調用。在內部處理程序中,您將自己找到程序集,使用'Assembly.LoadFrom'加載它並返回它。看看我鏈接到的類似SO問題的例子。 – nejcs
我的問題是根dll必須位於應用程序路徑(C:\ Program Files \ RING)中,而其他位置必須位於不同的位置(C:\ Program Files \ ThirdParty)。這可以在沒有動態加載的情況下實現,並且即使在部署之後也必須引用第三方文件夾? – user7380740