我有一個位於目錄xyz中的dll。有沒有一種方法來加載該DLL而不實際指定路徑?
我知道我可以簡單地通過指定dll的路徑加載它,but then I bumped into a pretty annoying issue迫使我將該dll複製到我的應用程序bin目錄並使用其名稱加載它。
我寧願雖然沒有該bin目錄中的dll。那麼是否有一種方法可以使用其實際不在GAC或bin目錄中的名稱加載程序集?
有什麼我可以做我的Web應用程序掃描程序集的其他目錄?使用程序集名稱加載不在GAC或Web應用程序的bin目錄中的程序集,而不是路徑
2
A
回答
4
你可能想看看集探測
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
,並檢查在這裏:運行時如何定位程序集:http://msdn.microsoft.com/en-us/library/15hyw9x3(v=VS.100).aspx
2
您可以在您的app.config中指定要查找組件的位置。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
- 通過使用
Probing
元素。
2
您可以在web.config中使用probing
元素。
但是,我懷疑這是否解決了另一個問題中的問題。
1
作爲一種替代的方法來基於配置的回答,您可以爲註冊AppDomain.AssemblyResolve event。
這給了你在程序集解析失敗時運行一些代碼的機會,所以你可以嘗試在運行時糾正這個問題(例如,如果你覺得很有趣,你可以運行遞歸目錄搜索dll)。
這可能比使用配置更靈活,但要犧牲一些額外的複雜性。
相關問題
- 1. 如何在我的web應用程序的bin目錄外加載程序集
- 2. 在GAC之外引用程序集而不修復路徑
- 3. 如果不在GAC中,如何從另一個應用程序的bin目錄使用.net程序集?
- 4. GAC - 程序集在GAC中,但「無法加載文件或程序集」
- 5. 獲取當前目錄路徑或名稱程序集8086
- 6. 在應用程序正在使用的GAC中找不到程序集
- 7. 無法加載文件或程序集'System.EnterpriseServices.Wrapper.dll'在MVC應用程序中不是有效的Win32應用程序
- 8. 在應用程序路徑中引用程序集
- 9. 使用REGASM&COM時不在GAC中的程序集的多個搜索路徑
- 10. 在ASP.NET中從Bin加載程序集
- 11. 如何使用GAC中的程序集?
- 12. 從路徑加載程序集而不將其複製到bin文件夾
- 13. App.Config中的GAC程序集參考(控制檯應用程序)
- 14. 在URL中的應用程序名稱,而不是應用程序ID
- 15. WPF應用程序在GAC中註冊程序集?
- 16. 正在運行的應用程序名稱而不是程序包名稱
- 17. 從特定路徑加載強名稱程序集?
- 18. 我如何從GAC加載程序集?
- 19. C#:如何從GAC加載程序集?
- 20. 如何防止.NET應用程序從GAC加載/引用程序集?
- 21. 程序集在C#應用程序中加載的地方?
- 22. 無法在新的應用程序域中加載程序集
- 23. 使用WiX將程序集放入GAC和安裝路徑
- 24. 部署的.NET程序如何在GAC中引用程序集?
- 25. 程序集Microsoft.Xna.Framework.dll不加載
- 26. 如何從/ bin目錄中加載所有程序集
- 27. 如何在Delphi中使用.Net程序集而不註冊到GAC或COM中?
- 28. 在asp.net 2.0 web應用程序中使用.net 3.5程序集
- 29. 檢查GAC的程序集
- 30. 獲取Web應用程序程序集名稱,無論當前正在執行的程序集
也許你可能會覺得這[有用](http://www.roelvanlisdonk.nl/?p=713) – V4Vendetta
我給你提到探測web.config元素的所有人+1 .. Thx! – TweeZz