CLRホストの起動後にC#アセンブリルックアップパスを設定する方法(API関数)があるので、ExecuteInDefaultAppDomain()関数はそれを見つけることができますか?CLRを開始した後にアセンブリのルックアップパスを設定するにはどうすればよいですか?
ありがとうございます。
CLRホストの起動後にC#アセンブリルックアップパスを設定する方法(API関数)があるので、ExecuteInDefaultAppDomain()関数はそれを見つけることができますか?CLRを開始した後にアセンブリのルックアップパスを設定するにはどうすればよいですか?
ありがとうございます。
アセンブリの場所を指定するのにtwo waysと表示されているようです。
残念ながら、この場合はいずれも動作しません。これにより、アセンブリディレクトリの可能なリストとアセンブリ名を持つファイルを手動で見つけてから、ExecuteInDefaultAppDomain()関数のフルパスを渡す必要があります。
しかし、CLR APIでこのような機能が提供されていない(または、正しくは記載されていない可能性がある)理由はまだ分かりません。
このようなことができます。基本的に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));
}
ありがとうございました!しかし、私は、ExecuteInDefaultAppDomain()の呼び出しが自動的にそれを見つけて読み込むように、アセンブリのパス(ターゲットアセンブリを含むディレクトリの束)を設定するメソッドを探しています。 – khkarens
私の答えに別のオプションを追加 –
[probing for](http://msdn.microsoft.com/en-us/library/yx7xezcf.aspx)(読み込み中)アセンブリをCLRが 'PATH'環境変数を調べていない。 –