Office アプリケーション用に作成した VSTO アドインを最適化して、そのアドインの開始、終了、また、項目を開くなどのタスクの実行を素早く行えるようにして、ユーザー エクスペリエンスを向上させることができます。 VSTO アドインが Outlook を対象にしている場合は、不十分なパフォーマンスが原因で VSTO アドインが無効にされる可能性を低くすることができます。 次の方針を導入すると、VSTO アドインのパフォーマンスを向上させることができます。
-
Outlook VSTO アドインを最適化する方法の詳細については、「VSTO アドインを有効に保つためのパフォーマンス基準」を参照してください。
必要に応じた VSTO アドインの読み込み
次の状況でのみ読み込まれるように VSTO アドインを構成できます。
VSTO アドインのインストール後にユーザーがアプリケーションを初めて起動するとき。
それ以降にアプリケーションを起動した後、ユーザーが初めて VSTO アドインを操作するとき。
たとえば、ユーザーが [自分のデータを取得] というラベルの付いたカスタム ボタンをクリックしたときにワークシートにデータを取り込む VSTO アドインがあるとします。 [自分のデータを取得] ボタンがリボンに表示されるように、アプリケーションはこの VSTO アドインを少なくとも 1 回読み込む必要があります。 ただし、ユーザーが次にアプリケーションを起動するときには、この VSTO アドインは読み込まれません。 VSTO アドインが読み込まれるのは、ユーザーが [自分のデータを取得] ボタンをクリックしたときのみです。
必要に応じて VSTO アドインを読み込むように ClickOnce ソリューションを構成するには
ソリューション エクスプローラーで、プロジェクト ノードを選択します。
メニュー バーで [表示]>[プロパティ ページ] の順に選びます。
[発行] タブの [オプション] をクリックします。
[発行オプション] ダイアログ ボックスで、 [Office の設定] リスト項目を選択し、 [必要に応じて読み込む] オプションを選択してから、 [OK] をクリックします。
必要に応じて VSTO アドインを読み込むように Windows インストーラー ソリューションを構成するには
レジストリで、Root\Software\Microsoft\Office\ApplicationName\Addins\Add-in ID キーの
LoadBehavior
エントリを 0x10 に設定します。詳細については、「VSTO アドインのレジストリ エントリ」を参照してください。
ソリューションのデバッグ中に必要に応じて VSTO アドインを読み込むようにソリューションを構成するには
Root\Software\Microsoft\Office\ApplicationName\Addins\Add-in ID キーの
LoadBehavior
エントリを 0x10 に設定するスクリプトを作成します。このスクリプトの例を次のコードに示します。
[HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\MyAddIn] "Description"="MyAddIn" "FriendlyName"="MyAddIn" "LoadBehavior"=dword:00000010 "Manifest"="c:\\Temp\\MyAddIn\\bin\\Debug\\MyAddIn.vsto|vstolocal"
スクリプトを使用してレジストリを更新するビルド後のイベントを作成します。
次のコードに、ビルド後のイベントに追加できるコマンド文字列の例を示します。
regedit /s "$(SolutionDir)$(SolutionName).reg"
C# プロジェクト内でビルド後のイベントを作成する方法の詳細については、「方法 : ビルド イベントを指定する (C#)」を参照してください。
Visual Basic プロジェクト内でビルド後のイベントを作成する方法の詳細については、「方法 : ビルド イベントを指定する (Visual Basic)」を参照してください。
Windows インストーラーを使用して Office ソリューションを発行する
Windows インストーラーを使用してソリューションを発行する場合は、Visual Studio 2010 Tools for Office ランタイムは、VSTO アドインを読み込むときに次の手順をスキップします。
マニフェスト スキーマの検証。
更新プログラムの自動的な確認。
配置マニフェストのデジタル署名の検証。
Note
このアプローチは、ユーザーのコンピューターの安全な場所に VSTO アドインを配置する場合は不要です。
詳しくは、「Windows インストーラーを使用した Office ソリューションの配置」を参照してください。
リボンの反射をバイパスする
Visual Studio 2012 を使用してソリューションをビルドする場合は、ソリューションを配置するときに、ユーザーが Visual Studio 2010 Tools for Office ランタイムの最新バージョンを既にインストールしていることを確認します。 VSTO ランタイムの古いバージョンでは、リボンのカスタマイズを識別するために、ソリューションのアセンブリのリフレクションが実行されていました。 このプロセスを実行すると、VSTO アドインの読み込み速度がさらに低下する可能性があります。
別の方針として、Visual Studio 2010 Tools for Office ランタイムのどのバージョンを使用する場合でも、リボンのカスタマイズを識別することを目的としたリフレクションを防止することもできます。 この方針に従うには、CreateRibbonExtensibility
メソッドをオーバーライドし、明示的にリボン オブジェクトを返します。 VSTO アドインにリボンのカスタマイズが何も含まれていない場合は、メソッド内で null
を返します。
次の例では、フィールドの値に基づいてリボン オブジェクトを返します。
protected override Microsoft.Office.Core.IRibbonExtensibility
CreateRibbonExtensibilityObject()
{
if (myCondition == true)
{
return Globals.Factory.GetRibbonFactory().CreateRibbonManager(
new Microsoft.Office.Tools.Ribbon.IRibbonExtension[] { new Ribbon1() });
}
else
{
return Globals.Factory.GetRibbonFactory().CreateRibbonManager(
new Microsoft.Office.Tools.Ribbon.IRibbonExtension[] { new Ribbon2() });
}
}
別の実行スレッドでコストの高い操作を実行する
時間を要するタスク (長時間実行されるタスク、データベース接続、または他の種類のネットワークの呼び出しなど) を単独のスレッドで実行することを検討してください。 詳細については、「Office でのスレッドのサポート」を参照してください。
Note
Office オブジェクト モデルを呼び出すすべてのコードは、メイン スレッドで実行する必要があります。