2011-07-14 26 views
2

我有一個位於目錄xyz中的dll。有沒有一種方法來加載該DLL而不實際指定路徑?
我知道我可以簡單地通過指定dll的路徑加載它,but then I bumped into a pretty annoying issue迫使我將該dll複製到我的應用程序bin目錄並使用其名稱加載它。
我寧願雖然沒有該bin目錄中的dll。那麼是否有一種方法可以使用其實際不在GAC或bin目錄中的名稱加載程序集?
有什麼我可以做我的Web應用程序掃描程序集的其他目錄?使用程序集名稱加載不在GAC或Web應用程序的bin目錄中的程序集,而不是路徑

+0

也許你可能會覺得這[有用](http://www.roelvanlisdonk.nl/?p=713) – V4Vendetta

+0

我給你提到探測web.config元素的所有人+1 .. Thx! – TweeZz

回答

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)。

這可能比使用配置更靈活,但要犧牲一些額外的複雜性。

相關問題