0

特定の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);
4

0 に答える 0