0

私は Silverlight 4 アプリケーションを使用しており、Prism/MEF を使用してモジュールを構築しています。

各モジュールは Silverlight アプリケーションとして作成されます。次に、ModulesCatalog.xaml ファイルを使用して、モジュールのロード方法を制御します。

6 つのモジュールがあり、すべてが完璧に機能していました。

今週は 7 番目のモジュールを追加し、新しい Silverlight アプリケーションを作成しました。モジュールクラスを次のようにセットアップします。

[ModuleExport(typeof(InsightModule))]
public class InsightModule : IModule
{

}

次に、ModulesCatalog ファイルにエントリを追加しました。

アプリケーションを実行すると、あらゆる種類の再構成エラーが発生し始めます。スタックはこれを示しています。

at System.ComponentModel.Composition.CompositionResult.ThrowOnErrors(AtomicComposition atomicComposition)
at System.ComponentModel.Composition.Hosting.ExportProvider.OnExportsChanging(ExportsChangeEventArgs e)
at System.ComponentModel.Composition.Hosting.CatalogExportProvider.OnCatalogChanging(Object sender, ComposablePartCatalogChangeEventArgs e)
at System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.OnChanging(Object sender, ComposablePartCatalogChangeEventArgs e)
at System.ComponentModel.Composition.Hosting.AggregateCatalog.OnChanging(ComposablePartCatalogChangeEventArgs e)
at System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.RaiseChangingEvent(Lazy`1 addedDefinitions, Lazy`1 removedDefinitions, AtomicComposition atomicComposition)
at System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.Add(ComposablePartCatalog item)
at Microsoft.Practices.Prism.MefExtensions.Modularity.MefModuleInitializer.CreateModule(ModuleInfo moduleInfo)
at Microsoft.Practices.Prism.Modularity.ModuleInitializer.Initialize(ModuleInfo moduleInfo)

次に、標準出力を取得します。

例外メッセージは次のとおりです。構成は変更されません。次のエラーのため、変更は拒否されました: 構成で複数の構成エラーが発生し、57 の根本原因がありました。根本的な原因を以下に示します。詳細については、CompositionException.Errors プロパティを確認してください。

1) パーツ「EyeCue.Common.AboutEyeCueView」の再構成不可能なインポート「EyeCue.Common.AboutEyeCueView.ViewModel (ContractName="EyeCue.Common.AboutEyeCueVM")」によって防止されたエクスポートの変更。

不可解なのは、他の 6 つのモジュールのいずれもこの問題を引き起こさなかった理由ですが、突然、この新しいモジュールで何も行われていないために、カタログの再構成が引き起こされていることです。意味がない。

さらに、場合によってはインポートする ctor があり、それを機能させるために必要だったので、Allow Recomposition 属性を設定するほど簡単ではありません。

VisualMFX をダウンロードしましたが、このコード行で Object Not initialized 例外がスローされます。

this.compositionInfo = new CompositionInfo(_aggregateCatalog,  _container);

これが発生した場合、両方の_aggregateCatalog&_containerは null ではありません。

要約すると、7 番目のモジュールが突然再構成を引き起こすのはなぜですか? 特に、この時点でモジュールがエクスポートまたはインポートを定義していない場合は? それは、この問題に対処するためにそれをどのように停止するかにつながりますか?

4

1 に答える 1

0

この問題は、Copy Local が true に設定されているアセンブリへの参照であることが判明しました。

メインアプリケーションアセンブリにも設定されているすべての参照が Copy Local = false に設定されていることを確認すると、問題が解決したようです。

于 2012-07-25T20:08:26.510 に答える