我在这里使用 Caliburn.Micro 引导程序:
https://gist.github.com/1127914
如果我将所有视图和视图模型与引导程序保持在同一个项目中,那么一切正常。
但是我想将 Views 和 ViewModels 文件夹推送到另一个程序集/项目,我这样做了,更改命名空间,更新引导程序以找到该视图模型。现在,当我运行时,我得到了关于
“找不到支持服务 MVVMBook.ViewModules.ViewModels.MainViewModel 的组件”
在引导程序的这一部分:
return string.IsNullOrWhiteSpace(key)
? _container.Resolve(service)
: _container.Resolve(key, service);
显然它无法连接 ViewModel,即使 VM 被设置为 Bootstrapper 的通用参数:
public class CastleBootstrapper : Bootstrapper<MainViewModel>
我使用的命名约定是一个名为 Views 的文件夹和一个名为 ViewModels 的文件夹,文件是 MainView.xaml 和 MainViewModel.cs
我在哪里可以告诉它在这个程序集中查看?
当视图和视图模型位于单独的程序集中但未解决问题时,建议将此部分添加到引导程序中:
// needed if views and viewmodels are in a seperate assembly
protected override IEnumerable<Assembly> SelectAssemblies()
{
return new[]
{
Assembly.GetExecutingAssembly()
};
}