0

メイン DLL を使用している Windows サービスについて奇妙な質問があります: Process.dll という名前です。Windows サービス呼び出し onstart():

Process client = new Process();

client.Method();

このメソッド Process.dll では、別の dll を使用しています。しかし、Windowsサービスはa、b、c dllを見つけられません。起動しない!シンプルなサービスは正常に動作していますが、アーキテクチャの下では動作せず、Windows サービスでは動作しません。別のdllをロードする方法を教えてください.または解決策はありますか? 以下のアーキテクチャに従ってコードを記述する方法は? (a、b、c dll は静的参照です。)

ここに画像の説明を入力

4

2 に答える 2

0

これを試して :

    Assembly a = Assembly.LoadFrom("YourDLL.dll");

    Type t = a.GetType("YourType");

    object obj = Activator.CreateInstance(t);
于 2012-06-15T07:21:18.220 に答える
0

Windows サービスからファイル (config または DLL) を動的にロードしようとすると、ファイルがサービスの EXE と同じディレクトリにある場合でも、ロードするファイルの場所を指定する必要があることがわかりました。

Windows サービスのディレクトリの場所を動的に取得するために使用するスニペットを次に示します。そこから、aliboy38のコード スニペットを使用して DLL をロードできます。

var exePath = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);

Assembly a = Assembly.LodFrom(Path.Combine(exePath, "YourDLL.dll"));

Type t = a.GetType("YourType");

object obj = Activator.CreateInstance(t);

お役に立てれば。

于 2012-06-15T08:46:11.520 に答える