特定のdllから1つのメソッドを呼び出すことだけを目的とするCSharpCodeProviderを使用して、実行可能ファイルを動的に生成しようとしています。生成されたファイルを実行すると、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);