2012-03-12 30 views
1

私はMEFを使って拡張可能なメトロアプリを作成しようとしています。私はローカルの拡張機能(現在のアセンブリの内部)で動作させました。今私は、外部DLLをロードしたい。 DirectoryCatalogが.net 4.5に存在しないようです。だからApplicationCatalogを使用しようとしましたが、SatisfyImportsOnceAssembly.LoadFrom is not supported in AppX.を呼び出す際に次のエラーが発生しました。メトロアプリからMEFを使用してdllをロード/インポートするにはどうすればよいですか?

ここで私はコードです:

var catalog = new AssemblyCatalog(GetType().GetTypeInfo().Assembly); 
ApplicationCatalog catApp = new ApplicationCatalog(); 
AggregateCatalog cat = new AggregateCatalog(catalog, catApp); 
_compositionService = cat.CreateCompositionService(); 
_compositionService.SatisfyImportsOnce(this); 

任意の提案間違って何が起こっているのか?

私はAppxディレクトリにdllを置き、VS11 Betaを管理者として実行しました。

答えて

1

私はMEFのフォーラムでいくつかのサポーターと話し合い、ApplicationCatalogをメトロアプリから使用できないことを確認しました。したがって、この問題は解決できませんが、閉じられる可能性があります。 Source Thread

1

外部ライブラリがMetroの許可サンドボックス外に届きます。 Metro環境の.NETフレームワークは、WP7またはMicro Frameworkと同様に制限されています。多くのものがカットされています。これらの制約ライブラリを使用して外部DLLが構築されていない場合、コンパイラはその使用を許可しません。

+0

dllのプロジェクトをWindows Metroスタイルのクラスライブラリとして作成しました。 –

+1

ああ、申し訳ありません、私はそれを逃した。出力をWinMDファイルに設定しましたか? http://sempf.net/post/Referencing-a-C-class-library-in-HTML5-Metro-UI.aspx –

+0

WinMDファイルはWinRTインターフェイスのみを実装することが許可されているため、いいえ、私はしませんでした。しかし、私のクラスは、コアプロジェクトのIExtensionインターフェイスを実装しています(リンクされたアーティクルの最後の文を参照)。私は、インポート/エクスポートのためにこのインタフェースが必要だと思うか、それとも私が逃した他の方法はありますか? –

関連する問題