System.AddInを利用するとホストとアドイン自体のアセンブリ以外に5つのアセンブリが必要になる。その中で重要な部分はコントラクトと呼ばれるホストとアドイン間のプロトコル定義のインタフェースのみ。コントラクトは基本的にアドインが実装するべきメソッドになると思う。ただしアドイン開発者はこのインタフェースを知っている必要はない。
このコントラクトの内容を考える以外は、ホストとアドイン間でやりとりができるように、ただひたすらインタフェースやら抽象クラスやらを記述するのみ。これがたいへん。今日、アドインにイベントを追加できることを確認したけど、10数以上のファイル(インタフェースやクラス)の記述が必要になってくる。
前置きは終わり。詳しくはMSDNへ。おすすめは「チュートリアル : 拡張性のあるアプリケーションの作成」。やることわかってないと以下のPipeline Builderが何をしてくれるのかわからないと思う。
Pipeline Builderのインストール
コントラクトのみ記述して、他のアドインとビューのプロジェクトおよびコードを自動生成してくれるツールを使ってみました。開発者はCLR Add-Inチーム。Visual Studio 2008のアドインとして動作します。以下からまずはインストーラをダウンロードしてインストール。
Managed Extensibility and Add-In Framework - Release: Pipeline Builder CTP March-2008
Visual Studio 2008の登録方法は、メニューのツール-オプションから「アドイン/マクロ セキュリティ」。ここにPipeline Builderがインストールされた場所を追加します。デフォルトは、Program Files (x86)\Microsoft\Visual Studio Pipeline Builderに入ってます。
追加したら再起動します。するとツールメニューに次のように項目が増えてます。
Quick Sample
すぐに試せるようにコントラクトのみのサンプルプロジェクトが用意されているので、それを使ってみます。C#です。
Managed Extensibility and Add-In Framework - Release: Sample- Blank Pipeline Project
コントラクトはひとつのメソッドを持ってます。
namespace Sample.Blank.Contracts
{
[AddInContract]
public interface ISampleAddInContract : IContract
{
void DoStuff();
}
}
サンプルプロジェクトでは既に設定されていますが、コントラクトは出力すべきフォルダ名が決まっています。プロジェクトのプロパティを確認するとわかりますが、..\output\Contracts が出力先になってます。
Pipeline Builderはコードからコードを生成するのではなく、アセンブリからコードを生成してくれます。よってビルドしておきましょう。
次にツールメニューから「Pipeline Builder」を選択します。次のようなウィンドウが表示されます。あらかじめ値が設定されていてサンプルの場合は変更する必要がないです。上から順に、コントラクトのプロジェクト、生成するプロジェクトの出力先、ビルド先です。
OKボタンを押すと、ソリューションにプロジェクトが追加されると思います。これは便利ー。というかこうあるべきですね。
コントラクト以外に必要なものは、アドインビュー、アドイン側アダプター、ホスト側アダプター、ホストビューです。生成されたのプロジェクトは3個。基本的にアドインビューとホストビューは同じものを記述するので1個のビューとして出力されたようです。なるほど!
ここらへんの設定は、コントラクタ内の属性でカスタマイズできるようですね。