IoC コンテナーに Unity を使用しており、ブートストラップには次のコードがあります。
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>
そして、Microsoft.Practices.Prism.Modularity が見つからず、Modularity:ModuleCatalog が見つからないという xaml のエラーが既に発生しています。
これは非常にイライラします。私のプロジェクトには Microsoft.Practices.Prism が含まれています。私の Bootstrapper のコードはコンパイルされるので、明らかに Microsoft.Practices.Prism.Modularity.ModuleCatalog が存在します。しかし、CreateModuleCatalog 関数を次のように変更すると、さらに奇妙になります。
using Microsoft.Practices.Prism.Modularity;
...
protected override IModuleCatalog CreateModuleCatalog()
{
return ModuleCatalog.CreateFromXaml(
new Uri("modulecatalog.xaml", UriKind.Relative));
}
CreateFromXaml が ModuleCatalog に存在しないと表示されます。ModuleCatalog を見つけるのに問題はありませんが、毎回完全な名前空間を入力しないと、その関数は明らかに存在しません。何が起きてんだ?