我尝试使用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);