Pipeline Builder CTP March-2008 その1
Pipeline Builderをインストールして、サンプルプロジェクトを使って各プロジェクトを生成するところまでしました。この後の作業として、さくっとホストとアドインを作ってみます。
アドイン プロジェクト
ソリューションにアドイン用のプロジェクト(クラスライブラリ)を追加します。宗教的な問題でVisual Basicです。ちなみにPipeline Builderで生成されるコードは今のところC#のみになっています。
参照の追加します。System.AddInとSample.Blankプロジェクト(つまりビュー)を参照します。プロジェクトの参照は、デフォルトでDLLをローカルにコピーするようになるので、プロジェクトのプロパティからFalseに変更します。
さらにビルド出力先を変更しましょう。アドインのアセンブリは、AddIns\任意の名前 フォルダ以下に配置する必要があります。サンプルではoutputフォルダを出力先のルートにしていたので、「..\output\AddIns\Class1」のように設定します。
クラスにAddIn属性を付け、ビューのインタフェース ISampleAddInを実装します。ひとつのメソッドがあるだけでしたね。
Imports System.AddIn
Imports Sample.Blank
<AddIn("SampleAddIn")> _
Public Class Class1
Implements ISampleAddIn
Public Sub DoStuff() Implements Sample.Blank.ISampleAddIn.DoStuff
Console.WriteLine("Hello!")
End Sub
End Class
アドイン部分はこれで終了です。
ホスト アプリケーション プロジェクト
次はホスト アプリケーションのプロジェクトを追加します。コンソールアプリケーションにしました。
アドイン同様に参照を追加します。System.AddInと、ビューは共有していたのでこれも同じくSample.Blankプロジェクトを追加します。ホスト側のビューアセンブリは、ホストアプリケーションのアセンブリと同階層に置く必要がるのでローカルコピーが有効なままで結構です。
ビルド場所は「..\output」にします。また、このプロジェクトをスタートアッププロジェクトに設定しておきましょう。
アドインの探索、アクティブ化、破棄は次のようになります。
Imports System.AddIn.Hosting
Imports Sample.Blank
Module Module1
Sub Main()
Dim addInRoot = Environment.CurrentDirectory
' パイプライン セグメント キャッシュ更新
Dim warnings() As String = AddInStore.Update(addInRoot)
For Each warning As String In warnings
Console.WriteLine(warning)
Next
' アドイン探索
Dim tokens = AddInStore.FindAddIns(GetType(ISampleAddIn), addInRoot)
' アクティブ化
Dim instance = tokens.Single.Activate(Of ISampleAddIn)(AddInSecurityLevel.Internet)
' アドインのメソッド実行
instance.DoStuff()
' 破棄
AddInController.GetAddInController(instance).Shutdown()
Console.ReadLine()
End Sub
End Module
実行すると……アドインの呼び出し成功ー。
Pipeline Builderを使ったサンプルは以上です。まだ私も試してませんが、Pipeline Builderでイベントの作成や、生成したコードを修正した場合なども考慮されているみたいですね。
Managed Extensibility and Add-In Framework - Home