Pipeline Builder CTP March-2008 その2

投稿日 : 2008年5月27日 22:14

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

コメントの入力
タイトル
名前
Url
コメント