1つのEXEアプリケーションを作成しようとしています。そのために、私は私のアプリに埋め込みリソースとしてタグ付けされた2つのDLLを持っています。私は首尾よくAppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(myresolve)
メソッドを使用して、イベントが発生したときにアセンブリを返すことができます。C#:AssemblyResolve関数を使用して複数のアセンブリを解決する
私の問題は、アプリケーション内のメソッドが複数のアセンブリを参照していることです。上記のイベントハンドラを使用してアセンブリをロードして返すと、アプリケーションは間違ったアセンブリファイル内のメソッドを探し、「型のロード例外」を取得します。
したがって、使用する可能性のあるメソッドのアプリケーションが適切な場所にあるようにアセンブリをロードするにはどうすればよいですか?
大切にしてください。
コードサンプル:
DLL解像度:L.B.の提案を1として
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ResolveDll)
static Assembly ResolveDll(object sender, ResolveEventArgs args)
{
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyApplication.Resources.MyDll1.dll"))
{
byte[] assemblyData = new byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData); //Obviously resolves the first DLL, but how can I also resolve the second?
}
}
void SomeMethod()
{
MyDll1.Class.CallAMethod()
MyDll2.Class.CallAnotherMethod() //Type Load exception - Assembly Resolution told it to look in MyDll1.
}
最小限の再現性のあるコードサンプルを含めてください。 –
あなたは 'args.Name'を使ってみましたか? –
私はしていません。あなたが考えていたことの短い例を教えてください。 – ASB