gpt4 book ai didi

c# - 如何动态加载包含非托管代码的原始程序集?(绕过 'Unverifiable code failed policy check' 异常)

转载 作者:IT王子 更新时间:2023-10-29 04:42:54 24 4
gpt4 key购买 nike

我将举一个使用 System.Data.SQLite.DLL 的例子这是一个包含非托管代码的混合程序集: 如果我执行这个:

  var assembly= Assembly.LoadFrom("System.Data.SQLite.DLL")

没有异常被抛出,但是如果我这样做:

  var rawAssembly = File.ReadAllBytes("System.Data.SQLite.DLL");
var assembly = Assembly.Load(rawAssembly);

CLR 抛出 FileLoadException 并显示“无法验证的代码策略检查失败。(来自 HRESULT 的异常:0x80131402)”。 假设我正在尝试将此程序集加载到子 AppDomain 上,我如何自定义 AppDomain 的安全性以允许我通过策略检查?

最佳答案

我们是糟糕异常消息的受害者。不支持使用包含非托管代码的 Assembly.Load(byte[]) 加载程序集。这是这个 feedback item 的主题.

更新:链接的反馈项已消失,在 VS2012 发布时作为清理的一部分被删除。它仍然可以恢复的唯一部分是这个片段,从另一个网页复制:

“[…] we only allow ILOnly images to be loaded […] since anything else is not safe”--

更新:链接已通过 archive.org 备份副本修复。

关于c# - 如何动态加载包含非托管代码的原始程序集?(绕过 'Unverifiable code failed policy check' 异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2945080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com