0

如何动态加载 DLL?

不要建议:

  1. 不建议 GAC,因为 DLL 已经制作,无法更改或更新。
  2. 不建议使用提示路径,Assembly.LoadFrom(...)因为此功能适用于不在项目之外的调试。

如果我将该 DLL/exe 复制到项目外部的测试机器上,则会显示错误:无法加载 .dll。

我还在MSDN 论坛上问了一个问题。

有人可以帮我吗?

谢谢阿什什
_

4

2 回答 2

2

System.Reflection.Assembly.LoadFile()为此工作得很好。

如果您正在获取BadImageFormatException,请检查您尝试加载的程序集是否针对与执行加载的程序集相同的平台目标(x86 或 x64)进行编译。

根据评论更新

听起来您正在尝试将 .NET 2.0 程序集加载到 .NET 4.0 应用程序中,并且您已经将以下内容放入应用程序配置文件中:

<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
        <supportedRuntime version="v4.0" />    
    </startup>
</configuration>

在这种情况下,请检查以确保您的配置文件与可执行文件一起部署在目标机器上。例如,如果你的应用程序被调用MyProgram.exe,你的配置文件应该被调用MyProgram.exe.config——并且它需要被复制到与目标机器上的可执行文件相同的文件夹中才能生效——框架将在启动时加载这个文件,如果它存在。

于 2012-08-13T10:14:29.600 回答
0

1) 尝试使用 assembly.loadfile 函数而不是 loadfrom。它也将在项目之外工作。2)如果你得到程序集混合模式错误,只需要复制xml文件以及bin文件夹中生成的dll。xml文件包含app.config文件数据。app.config 文件中的代码是...

还要检查链接... http://social.msdn.microsoft.com/Forums/en/csharpide/thread/99691cc4-27df-48e7-b4aa-377f74109425

于 2012-08-14T06:56:56.697 回答