如何动态加载项目外的DLL?

时间:2012-08-13 09:28:42

标签: c# dll

如何动态加载DLL?

不要建议:

  1. 不建议使用GAC,因为DLL已经制作好,无法更改或更新。
  2. 不建议使用hintpath Assembly.LoadFrom(...),因为此功能适用于不在项目之外的调试。
  3. 如果我将该DLL / exe复制到项目外的测试机器上,则会显示错误:无法加载.dll。

    我还问了一个问题at the MSDN forums

    有人可以帮助我吗?

    感谢
    阿希什

2 个答案:

答案 0 :(得分: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 - ,并且需要将其复制到与目标计算机上的可执行文件相同的文件夹中才能生效 - 框架将在启动时加载此文件(如果存在)。

答案 1 :(得分:0)

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

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