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.youkuaiyun.com/studying/article/details/6663627】

转载于:https://www.cnblogs.com/lfxiao/p/6771611.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值