解决程序集的异常:尝试使用fixup加载无法验证的可执行文件

时间:2011-02-15 15:12:44

标签: c# assembly-resolution

我正在将所需的程序集嵌入到我的项目中,并使用AppDomain.CurrentDomain.AssemblyResolve事件在运行时解析它们。

一切正常,除了irrKlang的.net4-wrapper,如果我这样做会抛出异常;

System.IO.FileLoadException: Attempt to load an unverifiable executable with fixups (IAT with more than 2 sections or a TLS section.) (Exception from HRESULT: 0x80131019)
   at System.Reflection.RuntimeAssembly.nLoadImage(Byte[] rawAssembly, Byte[] rawSymbolStore, Evidence evidence, StackCrawlMark& stackMark, Boolean fIntrospection, SecurityContextSource securityContextSource)
   at System.Reflection.Assembly.Load(Byte[] rawAssembly)
   at xyz.Utility.Helpers.AssemblyManager.Resolver(Object sender, ResolveEventArgs args) in C:\Users\shalafi\Desktop\xyz\trunk\xyz\Utility\Helpers\AssemblyManager.cs:line 55
   at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)

基本上我怀疑CLR not being able to load mixed mode assemblies和Assembly.Load(byte [])虽然我不确定。

我无法找到与异常消息相关的任何内容;

  

尝试使用fixups加载无法验证的可执行文件(IAT包含2个以上的部分或TLS部分。)

帮助表示赞赏。

2 个答案:

答案 0 :(得分:4)

编辑:由于过时的外部链接,我发布的参考资料不再有效。请参考这里。 How do I dynamically load raw assemblies that contains unmanaged code?(bypassing 'Unverifiable code failed policy check' exception)

答案 1 :(得分:0)

以防其他人有我的这个问题的版本,这是我修复它的方法:

  • 使用其他名称创建新项目
  • 将所有文件复制到新项目(包括代码)
  • 添加对编译无错误所需的所有文件的引用

我真的必须弄清楚我的参考/资源。尝试从我的程序加载任何外部.dll时出现此错误。