21

我将所需的程序集嵌入到我的项目中,并在运行时使用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无法使用 Assembly.Load(byte[]) 加载混合模式程序集,但我不确定。

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

尝试使用修正加载无法验证的可执行文件(IAT 具有超过 2 个部分或 TLS 部分。)

帮助表示赞赏。

4

2 回答 2

5

编辑:由于过时的外部链接,我发布的参考资料不再有效。请参考这里。 如何动态加载包含非托管代码的原始程序集?(绕过“无法验证的代码未能通过策略检查”异常)

于 2012-05-21T21:16:31.577 回答
0

以防万一其他人遇到我的这个问题,我是这样解决的:

  • 创建一个具有不同名称的新项目
  • 将所有文件复制到新项目中(包括代码)
  • 添加对编译所需的所有文件的引用而不出错

我真的一定把我的参考资料/资源搞砸了。尝试从我的程序加载任何外部 .dll 时出现此错误。

于 2016-07-20T17:32:53.040 回答