C# 使用Assembly反射加载程序集报错An attempt was made to load...解决办法
随着学习的深入,涉及到的知识返回会越来越广,就会遇到各种问题,此贴为记录分享帖;背景:
代码书写没问题,使用Assembly.LoadFile(DLLPath)加载DLL在部分电脑上报错,报错图如下:https://img-blog.csdnimg.cn/20191021141452264.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA2NTQ0NDA=,size_16,color_FFFFFF,t_70#pic_center
(上传图片提示附件文件无法保存,此处调用了网络图片)
百度翻译:试图从网络位置加载程序集,这可能会导致在早期版本的.NET Frameowork中对程序集进行沙盒处理。默认情况下,此版本的.NET FromWork不启用CA策略,因此此加载可能很危险。如果此加载不打算对程序集进行沙盒处理。请启用“从远程源加载”开关。
大概意思是:由于电脑的安全性配置等,无法加载
现整理出俩种解决办法:
办法一(亲测可用):
在config配置中,添加设置
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
完整config示例:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
办法二(未测试):
Assembly类有一个静态函数UnsafeLoadFrom,这个函数在加载一个assembly的时候,不会进行一些安全检查
Assembly a = Assembly.UnsafeLoadFrom(DLLPath);
+1 {:2_31:}{:2_31:}{:2_31:}
页:
[1]