对于已关闭的源程序集,“无法验证的代码未通过策略检查”

时间:2010-04-10 03:27:58

标签: c# installer windows-installer

我正在尝试在MSI安装例程期间从C#程序中的资源流动态加载一些(购买的)程序集,但我收到“无法验证的代码失败的策略检查”。

我在网上阅读了一些关于使用/ clr:safe编译嵌入式程序集的提示,但我没有这个选项。有没有办法解决这个政策检查?

感谢。

3 个答案:

答案 0 :(得分:4)

加载无法验证的代码的唯一方法是来自完全信任进程(或可能是应用程序域)并禁用验证。

编辑:我不是这样做的,one of the C# language designers said "Unverifiable code requires full trust and is generally to be avoided"

答案 1 :(得分:1)

这可能不再适用,但我最近遇到了同样的问题。如果您将流并将其粘贴到临时文件中,则可以使用Assembly.LoadFrom来加载程序集。

答案 2 :(得分:1)

它已经太晚了,但它可能对某人有所帮助。

我在项目中使用了Sqlite DLL,当我在沙盒环境中部署代码时,我遇到了异常(见下文)

[FileLoadException: Unverifiable code failed policy check. (Exception from HRESULT: 0x80131402)]

[FileLoadException: Could not load file or assembly 'System.Data.SQLite, Version=1.0.79.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or one of its dependencies. Unverifiable code failed policy check. (Exception from HRESULT: 0x80131402)]

我在web.config文件的system.web中添加了trust level,并且工作正常。

<trust level="Full|High|Medium|Low|Minimal" originUrl="url"/>