Assembly.LoadFrom函数报错“尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理...”

本文介绍了在C#程序中使用Assembly.LoadFrom动态加载本地程序集时遇到的问题:在某些机器上运行报错,提示与.NET Framework的CAS策略和loadFromRemoteSources开关相关。解决方法是为每个程序集解除锁定,但此操作需手动完成。还探讨了文件属性中解除锁定的来源,通常仅存在于从网络下载的文件。提供了参考资料以批量解除文件锁定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  写好的C#程序,调用Assembly.LoadFrom函数动态加载本地程序集,在本机运行正常,但是在另外的机器上运行时报错:“尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理。此发行版的 .NET Framework 默认情况下不启用 CAS 策略,因此,此加载可能会很危险。如果此加载不是要对程序集进行沙盒处理,请启用 loadFromRemoteSources 开关”。
  百度错误信息,找到参考文献1,给出的解决方式是在待加载的程序集中点右键,选择属性,在最下方的安全中点击或勾选“解除锁定”。尝试该解决方案后发现确实可以解决问题,能够正常加载程序集。唯一麻烦的是不能批量修改文件属性中的解除锁定,只能一个一个的手动改动。

在这里插入图片描述
  测试过程中发现有些文件的属性中有解除锁定,有些则没有,通过百度信息(参考文献4)找到的解释是从浏览器中下载的文件的属性中才有解除锁定,本地生成的文件则没有(参考文献4中提到的是从IE浏览器下载的文件都有解除锁定,本人电脑使用的是chrome,也是下载的文件的属性中存在解除锁定)。
  参考文献2-3给出了一次性解决文件解除锁定的方法,有兴趣的可以试试。

参考文献:
[1]https://blog.youkuaiyun.com/qq_49014355/article/details/113689400
[2]https://blog.youkuaiyun.com/maxsky/article/details/20467511
[3]https://blog.youkuaiyun.com/shenlan18446744/article/details/22265199?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_utm_term~default-0.pc_relevant_aa&spm=1001.2101.3001.4242.1&utm_relevant_index=3
[4]https://ask.zol.com.cn/x/6071398.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值