![](/img/trans.png)
[英]Strange behavior when loading assemblies and its dependencies programatically
[英]Loading assemblies and its dependencies
我的應用程序在運行時從特定子文件夾動態加載程序集。 這些程序集編譯時依賴於其他程序集。 運行時嘗試從應用程序目錄加載這些內容。 但我想將它們放入模塊目錄中。
有沒有辦法告訴運行時dll在一個單獨的子文件夾中?
我最近使用的一個很好的方法是為AppDomain的AssemblyResolve事件添加一個事件處理程序。
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
然后在事件處理程序方法中,您可以使用Assembly.Load,Assembly.LoadFrom覆蓋之一加載試圖解析的程序集,並從該方法返回它。
編輯:
基於您的其他信息,我認為使用上述技術,特別是自己解決對程序集的引用是唯一真正的方法,無需重組您的應用程序即可運行。 它給你的是CLR無法解決的每個程序集的位置可以在運行時由代碼確定和加載...我在類似的情況下使用它來實現可插拔體系結構和程序集參考完整性掃描工具。
您可以使用清單文件中的<probing>
元素告訴Runtime在其組件文件的不同目錄中查找。
http://msdn.microsoft.com/en-us/library/823z9h8w.aspx
例如:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
您可以使用應用程序配置文件中的<codeBase>
元素。 有關“ 通過代碼庫或探測查找程序集 ”的更多信息。
好吧,加載的程序集沒有應用程序配置文件。
好吧,如果你在運行時知道特定的文件夾,你可以使用Assembly.LoadFrom 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.