2017-03-13 6 views
0

私のパッケージクラスからMEFコンポーネントと通信できる必要があります。私はいくつかの異なるアプローチを試しました:VSPackageクラスからMEFコンポーネントをインポートする

使用[インポート]属性からパッケージクラス。ただし、プロパティは常にnullです。私が知る限り、これはパッケージクラスからMEFコンポーネントをインポートすることができないためです。

MEFによって作成されたクラスのインスタンスを取得するために、 "componentModel.DefaultExportProvider.GetExportedValue"を呼び出そうとしました。これは実際にインスタンスを返しましたが、コピーや実際のMEFコンポーネントにリンクされていないようです

私がアクセスしようとしているMEFコンポーネントは、作成したカスタムのTeam Explorerページセクションです。私のパッケージには、トリガされたときに、アプリケーションの状態に関するいくつかの情報を含むメソッド呼び出しによってこのMEFコンポーネントを呼び出す必要があるイベントがあります。

これは簡単なはずですが、私は数日間頑張っています。

パッケージからMEFコンポーネントと通信するだけで済みます。これはできますか?これはすべて可能ですか?

答えて

1

答えが見つかりました。誰でも興味のある人は、SLaksの投稿サンプルソリューションを参照してください:Rebracer

基本的な考え方は、PackageクラスはOLEMenuCommandsを直接作成することはできません。そのすべては、MEFを使用してVisual Studioによって暗黙的にインスタンス化する必要があります。

How to register my service as a global service or how can I use MEF in my scenario?

関連する問題