C#在使用Assembly加載程序集時失敗


錯誤現象:

進行插件讀取時出現錯誤:“嘗試從一個網絡位置加載程序集,在早期版本的 .NET Framework 中,這會導致對該程序集進行沙盒處理。此發行版的 .NET Framework 默認情況下不啟用 CAS 策略,因此,此加載可能會很危險。如果此加載不是要對程序集進行沙盒處理,請啟用 loadFromRemoteSources 開關。有關詳細信息,請參見 http://go.microsoft.com/fwlink/?LinkId=155569。”

 

錯誤原因:由於在項目中引用了外部dll,DotNET的安全機制阻止加載一個本地網或互聯網上的assembly。

方法1,參考https://msdn.microsoft.com/en-us/library/dd409252(VS.100).aspx進行解決,配置app.config就可以完<configuration>

   <runtime>

 <loadFromRemoteSources enabled="true"/> </runtime> </configuration>

方法2,Assembly類有一個靜態函數UnsafeLoadFrom,這個函數在加載一個assembly的時候,不會進行一些安全檢查。加載dll語句修改為:

    string dll = @"Z:\test.dll";  

    Assembly a = Assembly.UnsafeLoadFrom(dll);  

方法3, Assembly的load方法有很多的重載,可以使用其中的一個參數為byte[]的load函數。代碼如下:

    string dll = @"Z:\test.dll"; ;  

    byte[] assemblyBuffer = File.ReadAllBytes(dll);  

    Assembly a = Assembly.Load(assemblyBuffer);  



【原文http://blog.csdn.net/studying/article/details/6663627】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM