アプリケーション レベルのアドインのアーキテクチャ

Visual Studio の Office 開発ツールを使用して作成するアドインには、信頼性とセキュリティの向上に役立つアーキテクチャ要素があり、それらを Microsoft Office と緊密に連携させることができます。このトピックでは、アドインの以下の点について説明します。

  • アドインについて

  • アドインのコンポーネント

  • アドインと Microsoft Office アプリケーションの連携

対象: このトピックの情報は、Microsoft Office 2013 および Microsoft Office 2010 のアプリケーション レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。

アドインの作成の概要については、「Office ソリューションの開発の概要」および「アプリケーション レベルのアドインのプログラミングについて」を参照してください。

アドインについて

Visual Studio の Office 開発ツールを使用してアドインを作成するときには、Microsoft Office アプリケーションが読み込むマネージ コード アセンブリを作成します。アセンブリが読み込まれると、アドインがアプリケーションで発生するイベント (ユーザーがメニュー項目をクリックした場合など) に応答できます。アドインでは、オブジェクト モデルを呼び出してアプリケーションの自動化や拡張を行うこともでき、さらに .NET Framework のクラスも使用できます。

アセンブリは、アプリケーションのプライマリ相互運用機能アセンブリを介してアプリケーションの COM コンポーネントとの通信を行います。詳細については、「Office プライマリ相互運用機能アセンブリ」および「Office ソリューションの開発の概要」を参照してください。

複数のアドインがアプリケーションにインストールされている場合、各アドインは異なるアプリケーション ドメインに読み込まれます。このため、1 つのアドインが正しく動作しない場合でも、それが原因で他のアドインにエラーが発生することはありません。また、アプリケーションが閉じている場合には、すべてのアドイン アセンブリがメモリから確実にアンロードされます。アプリケーション ドメインの詳細については、「アプリケーション ドメイン」を参照してください。

[!メモ]

Visual Studio の Office 開発ツールを使用して作成するアドインは、エンド ユーザーがホスト Microsoft Office アプリケーションを起動したときにのみ使用されることを目的としています。アプリケーションがプログラムで起動された場合 (オートメーション機能を使用する場合など)、アドインは予期したとおりに動作しないことがあります。

アドインのコンポーネント

アドインのメイン コンポーネントはアドイン アセンブリですが、Microsoft Office アプリケーションがアドインを検出して読み込むときに重要な役割を果たすコンポーネントが他にもいくつかあります。

Bb386298.collapse_all(ja-jp,VS.110).gifレジストリ エントリ

Microsoft Office アプリケーションは、一連のレジストリ エントリを検索してアドインを検出します。アドインで使用されるレジストリ エントリの完全な一覧については、「アプリケーション レベルのアドインのレジストリ エントリ」を参照してください。

ソリューションをビルドすると、Visual Studio によって開発コンピューター上に必要なレジストリ エントリが作成されるので、アドインを簡単にデバッグおよび実行できます。詳細については、「Office ソリューションのビルド」を参照してください。

ClickOnce を使用してソリューションを配置すると、発行プロセスで生成されたセットアップ プログラムによってエンド ユーザーのコンピューター上にレジストリ キーが自動的に作成されます。詳細については、「ClickOnce を使用した Office ソリューションの配置」を参照してください。

Bb386298.collapse_all(ja-jp,VS.110).gif配置マニフェストとアプリケーション マニフェスト

アドインは、配置マニフェストとアプリケーション マニフェストを使用して、最新バージョンのアドイン アセンブリを特定し、読み込みます。配置マニフェストは、最新のアプリケーション マニフェストを指します。アプリケーション マニフェストは、アドイン アセンブリを指し、エントリ ポイント クラスを指定して、アセンブリ内で実行します。詳細については、「Office ソリューションにおけるアプリケーション マニフェストと配置マニフェスト」を参照してください。

Bb386298.collapse_all(ja-jp,VS.110).gifVisual Studio Tools for Office ランタイム

アドインを実行するには、Visual Studio の Office 開発ツールを使用して作成された、コンピューターが Visual Studio Tools for Office Runtime があるエンド ユーザーがインストールされます。ランタイムは、マネージ アセンブリがのアンマネージ コンポーネントと一連含まれます。アンマネージ コンポーネントは、アドイン アセンブリを読み込みます。これらのマネージ アセンブリにより、アドイン コードがホスト アプリケーションを自動化して拡張するために使用するオブジェクト モデルが提供されます。

詳細については、「Visual Studio Tools for Office Runtime の概要」を参照してください。

アドインと Microsoft Office アプリケーションの連携

ユーザーが Microsoft Office アプリケーションを起動すると、アプリケーションは配置マニフェストとアプリケーション マニフェストを使用してアドイン アセンブリの最新バージョンを検出し、読み込みます。アドインの基本アーキテクチャを次の図に示します。

アドイン アーキテクチャ

2007 Office アドイン アーキテクチャ

[!メモ]

.NET Framework 4 か .NET Framework 4.5を対象とする Office ソリューションでは、ソリューション アセンブリに埋め込まれた PIA を直接呼び出す代わりに、PIA の型情報を使用してホスト アプリケーションのオブジェクト モデルへのソリューションを呼び出します。詳細については、「Office ソリューションのデザインと作成」を参照してください。

Bb386298.collapse_all(ja-jp,VS.110).gif読み込みプロセス

ユーザーがアプリケーションを起動すると、次の処理が行われます。

  1. アプリケーションは、Visual Studio の Office 開発ツールを使用して作成されたアドインを特定するレジストリ エントリをチェックします。

  2. 該当するレジストリ エントリが見つかると、アプリケーションは VSTOEE.dll を読み込み、VSTOEE.dll が VSTOLoader.dll を読み込みます。これらは、Office ランタイムの Visual Studio 2010 Tools のローダー コンポーネントのアンマネージ DLL です。詳細については、「Visual Studio Tools for Office Runtime の概要」を参照してください。

  3. VSTOLoader.dll は .NET Framework を読み込み、Visual Studio Tools for Office Runtime のマネージ部分を起動します。

  4. Visual Studio Tools for Office Runtime は、マニフェストの更新プログラムをチェックし、最新のアプリケーション マニフェストおよび配置マニフェストをダウンロードします。

  5. Visual Studio Tools for Office Runtimeは、一連のセキュリティ チェックを実行します。詳細については、「Office ソリューションのセキュリティ保護」を参照してください。

  6. アドインを信頼して実行できる場合、Visual Studio Tools for Office Runtime は配置マニフェストとアプリケーション マニフェストを使用して、アセンブリの更新をチェックします。利用できる新しいバージョンのアセンブリが存在する場合、ランタイムは、クライアント コンピューターの ClickOnce キャッシュに新しいバージョンのアセンブリをダウンロードします。詳細については、「Office ソリューションの配置」を参照してください。

  7. Visual Studio Tools for Office Runtime がアドイン アセンブリの読み込み先となる新しいアプリケーション ドメインを作成します。

  8. Visual Studio Tools for Office Runtime がそのアプリケーション ドメインにアドイン アセンブリを読み込みます。

  9. Visual Studio Tools for Office Runtime がアドインの RequestComAddInAutomationService メソッドを呼び出します (このメソッドをオーバーライドしている場合)。

    このメソッドをオーバーライドして、アドイン内のオブジェクトを他の Microsoft Office ソリューションに公開することもできます。詳細については、「他の Office ソリューションからのアプリケーション レベルのアドインのコードの呼び出し」を参照してください。

  10. Visual Studio Tools for Office Runtime がアドインの RequestService メソッドを呼び出します (このメソッドをオーバーライドしている場合)。

    このメソッドをオーバーライドして、機能拡張インターフェイスを実装するオブジェクトを返すことにより、Microsoft Office 機能を拡張することもできます。詳細については、「機能拡張インターフェイスによる UI 機能のカスタマイズ」を参照してください。

    [!メモ]

    Visual Studio Tools for Office Runtime が、ホスト アプリケーションによってサポートされる機能拡張インターフェイスごとに RequestService メソッドを呼び出します。RequestService メソッドの最初の呼び出しは、通常は ThisAddIn_Startup の呼び出しの前に行われますが、アドインでは RequestService メソッドが呼び出される時点や回数を推測することはできません。

  11. Visual Studio Tools for Office Runtime がアドイン内の ThisAddIn_Startup メソッドを呼び出します。このメソッドは、Startup イベントの既定のイベント ハンドラーです。詳細については、「Office プロジェクトのイベント」を参照してください。

参照

概念

ドキュメント レベルのカスタマイズのアーキテクチャ

Visual Studio Tools for Office Runtime の概要

その他の技術情報

Visual Studio の Office ソリューションのアーキテクチャ

アプリケーション レベルのアドインのプログラミング

Office ソリューションの開発

Office ソリューションのセキュリティ保護

Office ソリューションの配置