錯誤現象:
進行插件讀取時出現錯誤:“嘗試從一個網絡位置加載程序集,在早期版本的 .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】