【问题标题】:Load 64 bit C# dll from 32 bit C# application [duplicate]从 32 位 C# 应用程序加载 64 位 C# dll [重复]
【发布时间】:2015-12-10 07:25:42
【问题描述】:

我有 64 位 dll Test.dll。 通过 32 位 exe 的再膨胀加载此 dll。

AssemblyName name = AssemblyName.GetAssemblyName("Test.dll"); 
assembly = Assembly.Load(name);

但是 Load 方法给出以下异常:

“System.BadImageFormatException”类型的未处理异常 发生在 TestDll.exe 中,例如“无法加载文件或程序集‘测试, Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 或其之一 依赖关系。试图加载一个不正确的程序 格式。”

谁能建议如何解决这个问题?

【问题讨论】:

  • 不是按设计工作吗?
  • 这不是重复的,我想通过反射访问。

标签: c# .net dll


【解决方案1】:

要使用方法 Load,您必须使用程序集的 QualifiedName。如果您只使用字符串,则实例化可能会模棱两可并且不起作用。请在官方文档中查看如何使用此方法。

https://msdn.microsoft.com/en-us/library/system.reflection.assembly.load(v=vs.110).aspx

这是一个人们谈论这个的stackoverflow线程。

How to get C#.Net Assembly by name?

【讨论】:

  • 我不认为这是正确的。 1.问题不在于找不到程序集。 2. 他们没有将字符串传递给Load
  • 正确,我的 dll 在 64 位环境中创建。我想通过 Load 方法将这个 dll 加载到我的 32 位 exe 中。
猜你喜欢
  • 2011-08-12
  • 1970-01-01
  • 2014-08-10
  • 2013-04-11
  • 2011-01-16
  • 2013-06-08
  • 1970-01-01
  • 2014-07-18
  • 2017-09-17
相关资源
最近更新 更多