2011-08-08 10 views

答えて

0

アセンブリの場所を指定するのにtwo waysと表示されているようです。

残念ながら、この場合はいずれも動作しません。これにより、アセンブリディレクトリの可能なリストとアセンブリ名を持つファイルを手動で見つけてから、ExecuteInDefaultAppDomain()関数のフルパスを渡す必要があります。

しかし、CLR APIでこのような機能が提供されていない(または、正しくは記載されていない可能性がある)理由はまだ分かりません。

2

このようなことができます。基本的にAssemblyResolveイベントは、アセンブリへのパスが見つからないたびに呼び出されます。その後、そのアセンブリを手動でロードする機会があります。

AppDomain.CurrentDomain.AssemblyResolve += 
    new ResolveEventHandler(CurrentDomain_AssemblyResolve); 

private System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, 
    ResolveEventArgs args) 
    { 
     string name = args.Name; 
     //You can return null if you don't know how to load this assembly 
     return Assembly.LoadFrom(SomeFunction(name)); 
    } 
+0

ありがとうございました!しかし、私は、ExecuteInDefaultAppDomain()の呼び出しが自動的にそれを見つけて読み込むように、アセンブリのパス(ターゲットアセンブリを含むディレクトリの束)を設定するメソッドを探しています。 – khkarens

+0

私の答えに別のオプションを追加 –

+0

[probing for](http://msdn.microsoft.com/en-us/library/yx7xezcf.aspx)(読み込み中)アセンブリをCLRが 'PATH'環境変数を調べていない。 –

関連する問題