我计划使用MVVM Light编写一个WPF应用程序,并希望仅使用可执行文件来分发它,仅表示“MyApp.exe”(没有所有其他MVVM Light程序集)。
我的想法是将所有程序集嵌入项目资源中,然后在应用程序启动时动态加载它,例如在App.xaml.cs中调用以下代码块。
private static void LoadAllAssemblies()
{
var assemblies = Assembly.GetExecutingAssembly().GetManifestResourceNames().Where(x => x.EndsWith(".dll")).ToList();
foreach (var assembly in assemblies)
{
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(assembly))
{
if (stream == null)
continue;
var data = new Byte[stream.Length];
stream.Read(data, 0, data.Length);
Assembly.Load(data);
}
}
}
现在的问题是每当我尝试运行它时,它会继续通过以下消息给我一个例外,“
在类型上调用构造函数 与指定绑定匹配的“MyApp.Framework.ViewModelLocator” 约束引发了异常。
知道为什么会这样,以及如何做到这一点?或者它甚至可行吗?