我正在尝试使用 CSharpCodeProvider 动态生成可执行文件,其唯一目的是从特定的 dll 调用一个方法。当我执行生成的文件时,我得到一个 BadImageFormatException。
我已经将平台设置为 x86。当我手动编写调用该方法的代码并在 Visual Studio 中对其进行调试时,它工作得非常好。
这是可执行文件的代码:
using DLLName;
namespace ExampleNamespace
{
class Program
{
public static void Main(string[] args)
{
MyClass obj = new MyClass();
obj.MyMethod();
}
}
}
在动态编译代码之前,我通过添加程序集
compilerParameters.ReferencedAssemblies.Add("PathToDLL");
我将可执行文件写入与 dll 相同的目录。
编辑
这是我用来调用编译器的代码:
CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = true;
parameters.GenerateInMemory = false;
parameters.OutputAssembly = @"DirectoryOfDLL\MyMethod.exe";
parameters.ReferencedAssemblies.Add("PathToDLL");
provider.CompileAssemblyFromSource(parameters, code);