CLRSCR 发表于 2019-10-21 14:32:40

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);




ibcadmin 发表于 2019-10-22 08:52:00

+1

sfasf2 发表于 2019-10-22 10:45:37

{:2_31:}{:2_31:}{:2_31:}
页: [1]
查看完整版本: C# 使用Assembly反射加载程序集报错An attempt was made to load...解决办法