我将 Unity 用于我的 IoC 容器,在我的引导程序中我有以下代码:
protected override IModuleCatalog CreateModuleCatalog()
{
return Microsoft.Practices.Prism.Modularity.ModuleCatalog.CreateFromXaml(
new Uri("modulecatalog.xaml", UriKind.Relative));
}
我创建了一个名为“modulecatalog.xaml”的xml文件,其中包含:
<?xml version="1.0" encoding="utf-8" ?>
<Modularity:ModuleCatalog
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:Modularity="clr-namespace:Microsoft.Practices.Prism.Modularity;assembly=Microsoft.Practices.Prism">
</Modularity:ModuleCatalog>
而且我已经在 xaml 中收到错误,说找不到 Microsoft.Practices.Prism.Modularity 并且找不到 Modularity:ModuleCatalog。
这非常令人沮丧。我的项目中包含 Microsoft.Practices.Prism。我的引导程序中的代码编译得很明显 Microsoft.Practices.Prism.Modularity.ModuleCatalog 确实存在。但更奇怪的是,如果我将 CreateModuleCatalog 函数更改为:
using Microsoft.Practices.Prism.Modularity;
...
protected override IModuleCatalog CreateModuleCatalog()
{
return ModuleCatalog.CreateFromXaml(
new Uri("modulecatalog.xaml", UriKind.Relative));
}
它说在 ModuleCatalog 上不存在 CreateFromXaml。查找 ModuleCatalog 没有问题,但如果我不每次都输入完整的命名空间,该功能显然不存在。WTF正在进行吗?