1

C#アプリケーションで、別のアプリケーションをロードします

Assembly assembly = Assembly.LoadFrom("tool.dll");

そしてそれを介して実行します

Type typeGame = assembly.GetType("com.Program");
object instanceOfMyType = Activator.CreateInstance(typeGame);
typeGame.InvokeMember("Run", BindingFlags.InvokeMethod, null, instanceOfMyType, null);

このロードされたアプリケーションは、現在の作業ディレクトリからファイルをロードします。単独で実行すると問題なく動作します。

しかし、上記のように別のアプリケーションにロードすると、作業ディレクトリが正しく、ファイルがそこにある場合でも、FileNotFoundExceptions が発生します。

また、作業ディレクトリを出力した場合

Console.WriteLine(Directory.GetCurrentDirectory());

ファイルが存在する正しいディレクトリを教えてくれます。

4

1 に答える 1

0

メソッドを使用AppDomain.CurrentDomain.GetAssembliesして、ドメインにロードされているかどうかを確認することをお勧めします。通常、bin フォルダー (実行フォルダー) 内のすべての dll がドメイン アセンブリ リストに読み込まれます。少なくとも、asp.net Web アプリケーションには当てはまります。

于 2012-10-18T08:49:23.290 に答える