0

我有一个通过 Caliburn.Micro 注入视图的窗口;

<ContentControl cal:View.Model="{Binding ViewModelObject}"/>

现在,没有 Fody.Costura,我可以看到我的 ViewModel 是通过 IoC 容器请求的。不久之后(此时可以看到控件),CM 向 IoC 请求 View 类。

现在,当我使用 Fody.Costura 时,首先通过 IoC 请求和解析 ViewModel 类型,这意味着程序集已被解包和加载。但是,CM 从不要求 IoC 解析视图类型,而我的屏幕上只是显示“无法找到...的视图”消息。

所以,问题在于,虽然 View 和 ViewModel 类型可以通过 IoC 解决,但当我使用 Costura 时,Caliburn Micro 甚至选择不尝试获取 View。

我认为 Caliburn.Micro 进行了初步检查以查找类型,但当您使用 Fody.Costura 合并引用的程序集时该检查失败。

知道如何解决吗?

更新:

我将一个 ILog 调试器附加到 Caliburn 并使用 Costura 我收到以下警告:

警告:未找到视图。搜索:Module.Recorder.Views.RecorderView、Module.Recorder.ViewModels.RecorderView。

但是,如前所述,我知道程序集在我加载它以搜索 NInject 模块时已加载,并且我可以看到 Module.Recorder.Views.RecorderView 是注入绑定的。

4

1 回答 1

1

问题是我引用的程序集。我必须手动加载它们SelectAssemblies()

不幸的是,我在这里使用了公认的解决方案,它从 exe 目录加载它们。

我对上述问题的解决方案是从当前加载的程序集中显式加载引用的程序集,如此处所回答。

于 2014-03-13T15:26:40.927 回答