execdll.exeを使用して、c#.net dllでメソッドを実行できるかどうかを知る必要があります。"execdll.exe"を使用してC#DLLのメソッドを呼び出しますか?
私は単純な方法のHello Worldを実行しようとしていますが、「このファイルの機能を参照できません」というエラーが表示されます。私が何か間違っているのかどうか分からない。
execdll.exeを使用して、c#.net dllでメソッドを実行できるかどうかを知る必要があります。"execdll.exe"を使用してC#DLLのメソッドを呼び出しますか?
私は単純な方法のHello Worldを実行しようとしていますが、「このファイルの機能を参照できません」というエラーが表示されます。私が何か間違っているのかどうか分からない。
rundll32.exeまたは少なくともexecdll.exeが類似していると仮定します。
.NETクラスをプレーンなDLLとして公開することはできません。彼らはしかし、COM DLLとして公開することができます。ですから、あなたが望むものを作る唯一の方法は、COMクラスとして.NETクラスを公開し、COMオブジェクトをインスタンス化して呼び出す通常のDLL(C++、Delphiなど)を作成することです。その後、rundll32.exeやその他のツールからDLLを呼び出すことができます。
あなたは方法が公開されていること、その
Assembly.Load(byteArrayOfDll).EntryPoint.Invoke(null, null);
チェック、
のためのアセンブリを使用することができます。
もう一つ:静的メソッドのみがあなたのコンテキストで
を理にかなって私は@Devils児童アプローチに賛成しています:
あなたのプロセスからDLLを実行する...
あなたの場合設計時に参照できます。
または実行時にリフレクションを使用してください。
、それが静的メソッドでない場合は、Activatorを使用してください(必要に応じて)
お勧めします。
しかし、プログラム* execdll.exe *を使って関数を呼び出す必要があります。私の関数は公開されているようですが、私はまだ同じエラーを受け取ります – Jay
@Jayなぜexecdll.exeを呼び出す必要がありますか? はあなたの方法はプライベートですか、パブリックですか? DLLを投稿できますか? –
私はdllをテストするためにアプリケーションを与えられました。これは私のdllですSir: ** using System; using System.Collections.Generic; System.Linqを使用します。 using System.Text;ネームスペースMainLibrary {public class Class1 {public static String HelloWorld(){return "Good to go"; }}} ** – Jay
どうすればいいですか?これは、以下の私のDLLです using System; using System.Collections.Generic; using System.Linq; using System.Text; 名前空間MainLibrary { パブリッククラスClass1 { パブリック静的文字列のHelloWorld(){ リターン "行ってもいい"。 } } } – Jay
実行ファイルをコンパイルし、メインファイルのリソースにファイルとして追加します。その後、 '(bytesArrayOfDll is Resources.testexe)'の上の行を使用すると、実行可能ファイルが起動します。 – bytecode77