2012-01-06 11 views
1

私が達成しようとしている基本的なアイデアは、Silverlightアプリケーションを実行時に(プロジェクト内の依存DLLへの参照を追加することなく)依存関係を解決するように構成することです。PrismとUnityを使用したSilverlightでのモジュールの動的ロード

インフラストラクチャプロジェクトを参照するUIプロジェクトは、さまざまなインターフェース(リポジトリーなど)を含むよりも優れています。これらのインターフェイスの具体的な実装は、実行時にダウンロードしてリンクしたい別々のSLアプリケーションに格納されています。外部設定ファイルからUIアプリケーションを設定して、実行時にアプリケーションを再コンパイルせずに別のインタフェース実装に切り替えることができるようにしたいと考えています。

私がこれまで行ってきたことは、それぞれの実装(別々のSLアプリケーションで)用のプリズムモジュールを作成し、それらのXAPをWebプロジェクトでホストすることです。

protected override void ConfigureContainer() 
    { 
     var unity = Unity.CreateFromXaml(new Uri("/UI;component/Repositories/UnityConfiguration.xaml", UriKind.Relative)); 
     unity.Containers.Default.Configure(Container); 
     Container.RegisterInstance<Unity>(Unity.ConfigurationKey, unity); 

     base.ConfigureContainer(); 
    } 

しかしunity.Containers.Default.Configure(Container):私は私のオーバーライドで

<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:ModuleInfo Ref="ImplementationOne.xap" 
         ModuleName="ImplementationOne" 
         ModuleType="ImplementationOne.Module, ImplementationOne, Version=1.0.0.0" /> 

</Modularity:ModuleCatalog> 

protected override IModuleCatalog CreateModuleCatalog() 
    { 
     var mc = Microsoft.Practices.Prism.Modularity.ModuleCatalog.CreateFromXaml(new Uri("/UI;component/Repositories/ModulesCatalog.xaml", UriKind.Relative)); 
     return mc; 
    } 

ModulesCatalog.xamlは次のようになります。私のUIアプリでは、私はこれを持っているboostraperを作成しましたアセンブリが見つからないことを通知します。 (UI.xapファイルにDLLを手動で追加すると、XAPがダウンロードされていないか、アセンブリが登録されていないため、何かが見つからないと思います。

私は今、この問題に1週間苦労していますが、多くのSOトピックを読んでいますが、まだ問題を解決することはできません。私が見つけたすべての例には、私が避けようとしているプロジェクトの正確な再現が含まれています。

ありがとうございます!

答えて

関連する問題