如果ms
变量是MemoryStream
,并包含一个.NET程序集,你通常会这样运行:如何从内存执行WPF程序集?
var asm = Assembly.Load(ms.ToArray());
var entry = asm.EntryPoint;
var inst = asm.CreateInstance(entry.Name);
entry.Invoke(inst, null);
这非常适用于控制台应用程序和Windows窗体应用程序,但是,WPF应用程序抛出一个异常:
Exception has been thrown by the target of an invocation.
随着System.IO.IOException
类型的内部异常:
Cannot locate resource 'mainwindow.xaml'.
堆栈跟踪是非常大的,但是从一开始猜测,从内存中加载时,它无法找到资源:
at MS.Internal.AppModel.ResourcePart.GetStreamCore(FileMode mode, FileAccess access)
at System.IO.Packaging.PackagePart.GetStream(FileMode mode, FileAccess access)
at System.IO.Packaging.PackagePart.GetStream()
at System.Windows.Application.LoadComponent(Uri resourceLocator, Boolean bSkipJournaledProperties)
at System.Windows.Application.DoStartup()
at System.Windows.Application.<.ctor>b__1(Object unused)
[...]
我怎么能解决这个问题?
如果由于Microsoft的实施,它需要一个文件来加载资源,临时exe文件是否可以工作,只有资源?如果是这样,我该如何创建一个并将MemoryStream中的程序集链接到它? – RoliSoft 2010-09-29 18:59:57