Architecture of VSTO Add-Ins
Visual Studio の Office Developer Tools を使用して作成される VSTO アドインには、安定性とセキュリティを重視するアーキテクチャ上の特性があり、Microsoft Office と密接に連携させることができます。 このトピックでは、VSTO アドインの次の点について説明します。
VSTO アドインと Microsoft Office アプリケーションの連携
適用対象: このトピックの情報は、VSTO アドイン プロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。
VSTO アドインの作成に関する一般的な情報については、「Office ソリューションの開発の概要 (VSTO)」と「VSTO アドインのプログラミングの概要」を参照してください。
VSTO アドインについて
Visual Studio の Office Developer Tools を使用して VSTO アドインをビルドする場合は、Microsoft Office アプリケーションによって読み込まれるマネージド コード アセンブリを作成します。 アセンブリが読み込まれると、VSTO アドインがアプリケーションで発生するイベント (ユーザーがメニュー項目をクリックした場合など) に応答できます。 また、VSTO アドインはオブジェクト モデルを呼び出して、アプリケーションの自動化や拡張を行うこともでき、さらに .NET Framework のすべてのクラスも使用できます。
アセンブリは、アプリケーションのプライマリ相互運用機能アセンブリを介してアプリケーションの COM コンポーネントとの通信を行います。 詳細については、「Office プライマリ相互運用機能アセンブリ」と「Office ソリューションの開発の概要 (VSTO)」を参照してください。
アプリケーションに複数の VSTO アドインがインストールされている場合、それぞれの VSTO アドインは異なるアプリケーション ドメインに読み込まれます。 つまり、正しく動作しない 1 つの VSTO アドインが原因で他の VSTO アドインでエラーが発生することはありません。 また、アプリケーションが閉じられた場合に、すべての VSTO アドイン アセンブリを確実にメモリからアンロードするためにも役立ちます。 アプリケーション ドメインの詳細については、「アプリケーション ドメイン」を参照してください。
Note
Visual Studio の Office Developer Tools を使用して作成する VSTO アドインは、エンド ユーザーがホストの Microsoft Office アプリケーションを起動したときにのみ使用されることを目的としています。 アプリケーションがプログラムで起動された場合 (オートメーション機能を使用して起動される場合など)、VSTO アドインが予期したとおりに動作しないことがあります。
VSTO アドインのコンポーネント
VSTO アドイン アセンブリは主要なコンポーネントですが、Microsoft Office アプリケーションが VSTO アドインを検出して読み込む動作において重要な役割を果たすコンポーネントが他にもいくつかあります。
レジストリ エントリ
Microsoft Office アプリケーションは、一連のレジストリ エントリを検索して VSTO アドインを検出します。 VSTO アドインで使用されるレジストリ エントリの完全な一覧については、「VSTO アドインのレジストリ エントリ」を参照してください。
ソリューションをビルドすると、Visual Studio によって開発用コンピューター上に必要なレジストリ エントリがすべて作成されるので、VSTO アドインをデバッグして実行することができます。 詳細については、「Office ソリューションのビルド」を参照してください。
ClickOnce を使用してソリューションを配置すると、発行プロセスで生成されたセットアップ プログラムによってエンド ユーザーのコンピューター上にレジストリ キーが自動的に作成されます。 詳しくは、「ClickOnce を使用して Office ソリューションを配置する」をご覧ください。
配置マニフェストとアプリケーション マニフェスト
VSTO アドインは配置マニフェストとアプリケーション マニフェストを使用して、最新バージョンの VSTO アドイン アセンブリを特定して読み込みます。 配置マニフェストは、最新のアプリケーション マニフェストを指します。 アプリケーション マニフェストは、VSTO アドイン アセンブリを指し、アセンブリ内で実行するエントリ ポイント クラスを指定します。 詳細については、「Office ソリューションでのアプリケーション マニフェストと配置マニフェスト」を参照してください。
Visual Studio Tools for Office ランタイム
Visual Studio の Office Developer Tools を使用して作成した VSTO アドインを実行するには、エンド ユーザーのコンピューター上に Visual Studio Tools for Office ランタイムがインストールされている必要があります。 ランタイムには、アンマネージド コンポーネントと一連のマネージド アセンブリが含まれています。 アンマネージ コンポーネントは、VSTO アドイン アセンブリを読み込みます。 マネージド アセンブリにより、VSTO アドイン コードがホスト アプリケーションを自動化して拡張するために使用するオブジェクト モデルが提供されます。
詳細については、「Visual Studio Tools for Office ランタイムの概要」を参照してください。
VSTO アドインと Microsoft Office アプリケーションの連携
ユーザーが Microsoft Office アプリケーションを起動すると、アプリケーションは配置マニフェストとアプリケーション マニフェストを使用して、最新バージョンの VSTO アドイン アセンブリを特定して読み込みます。 これらの VSTO アドインの基本アーキテクチャを、次の図に示します。
Note
.NET Framework 4 または .NET Framework 4.5 を対象とする Office ソリューションでは、PIA を直接呼び出す代わりに、ソリューション アセンブリに埋め込まれた PIA 型情報を使用してホスト アプリケーションのオブジェクト モデルを呼び出します。 詳細については、「Office ソリューションの設計と作成」を参照してください。
読み込みプロセス
ユーザーがアプリケーションを起動すると、次のステップが実行されます。
アプリケーションは、Visual Studio の Office Developer Tools を使用して作成された VSTO アドインを特定するエントリのレジストリをチェックします。
アプリケーションは、これらのレジストリ エントリを検出すると、VSTOEE.dll を読み込みます。これにより、VSTOLoader.dll が読み込まれます。 これらは、Visual Studio 2010 Tools for Office Runtime のローダー コンポーネントであるアンマネージ DLL です。 詳細については、「Visual Studio Tools for Office ランタイムの概要」を参照してください。
VSTOLoader.dll によって .NET Framework が読み込まれ、Visual Studio Tools for Office ランタイムのマネージド部分が開始されます。
Visual Studio Tools for Office ランタイムによってマニフェストの更新がチェックされ、最新のアプリケーション マニフェストと配置マニフェストがダウンロードされます。
Visual Studio Tools for Office ランタイムで、一連のセキュリティ チェックが実行されます。 詳細については、「Office ソリューションをセキュリティで保護する」を参照してください。
VSTO アドインを信頼して実行できる場合、Visual Studio Tools for Office ランタイムでは配置マニフェストとアプリケーション マニフェストを使用して、アセンブリの更新がチェックされます。 利用できる新しいバージョンのアセンブリが存在する場合、ランタイムによってクライアント コンピューターの ClickOnce キャッシュに新しいバージョンのアセンブリがダウンロードされます。 詳細については、「Office ソリューションを配置する」を参照してください。
Visual Studio Tools for Office ランタイムでは、VSTO アドイン アセンブリの読み込み先となる新しいアプリケーション ドメインが作成されます。
Visual Studio Tools for Office ランタイムで、VSTO アドイン アセンブリがアプリケーション ドメインに読み込まれます。
Visual Studio Tools for Office ランタイムで、VSTO アドインの RequestComAddInAutomationService メソッドが呼び出されます (このメソッドがオーバーライドされている場合)。
必要に応じて、このメソッドをオーバーライドして、VSTO アドイン内のオブジェクトを他の Microsoft Office ソリューションに公開できます。 詳細については、「他の Office ソリューションから VSTO アドインのコードを呼び出す」を参照してください。
Visual Studio Tools for Office ランタイムで、VSTO アドインの RequestService メソッドが呼び出されます (このメソッドがオーバーライドされている場合)。
必要に応じて、このメソッドをオーバーライドして、機能拡張インターフェイスを実装するオブジェクトを返すことで Microsoft Office 機能を公開できます。 詳しくは、「機能拡張インターフェイスを使用して UI 機能をカスタマイズする」をご覧ください。
Note
Visual Studio Tools for Office ランタイムでは、ホスト アプリケーションでサポートされている機能拡張インターフェイスごとに、RequestService メソッドが呼び出されます。 RequestService メソッドの最初の呼び出しは、通常、
ThisAddIn_Startup
メソッド呼び出しの前に実行されますが、 RequestService メソッドが呼び出される時点や回数について、推測に基づいて VSTO アドインを作成してはいけません。Visual Studio Tools for Office ランタイムで、VSTO アドインの
ThisAddIn_Startup
メソッドが呼び出されます。 このメソッドは、 Startup イベントの既定のイベント ハンドラーです。 詳細については、「Office プロジェクトのイベント」を参照してください。