-1
我试图制作一个EXE应用程序。为此,我有两个在我的应用程序中被标记为嵌入资源的DLL。当事件触发时,我可以成功使用AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(myresolve)
方法返回装配体。C#:使用AssemblyResolve函数解析多个程序集
我遇到的困难是我的应用程序中的方法引用了多个程序集。当我使用上面的事件处理程序加载并返回我的程序集时,我的应用程序在错误的程序集文件中查找一个方法,并得到一个“类型加载异常”。
因此,如何加载我的程序集,以便我的应用程序在适当的位置查找可能使用的任何方法?
亲切的问候。
代码示例:
DLL分辨率:
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