我的应用程序通过AppDomain.CurrentDomain.AssemblyResolve
事件加载它需要的程序集。程序集是正在执行的程序集的资源。
private static Assembly OnResolveAssembly(object sender, ResolveEventArgs args)
{
var executingAssembly = Assembly.GetExecutingAssembly();
var assemblyName = new AssemblyName(args.Name);
var resPath = assemblyName.Name + ".dll";
using (var stream = executingAssembly.GetManifestResourceStream(resPath))
{
if (stream != null)
{
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
return Assembly.Load(buffer);
}
}
return null;
}
一般来说,这很好,但是正在加载的程序集包含某些控件的默认样式,不会应用这些控件。但是,如果我不通过Assembly.Load加载程序集,而是将它保存到一个文件中并通过Assembly.LoadFrom
加载它,那么一切都很好。
这两者有什么区别?当直接从内存加载程序集时,它为什么不能工作??或者为什么它在第一次将程序集保存到磁盘,然后用Assembly.LoadFrom
加载它时工作?
我很困惑,我想直接从内存加载程序集,而不首先保存它们。
https://stackoverflow.com/questions/46466399
复制相似问题