8

Excel VSTO はどのように機能しますか? Visual Studio 2005 で Excel ワークブック ソリューションを作成すると、Excel オブジェクト モデルへのフル アクセスを使用して喜んでコードを作成でき、Excel シートをデザイン サーフェイスとして扱うこともできます。ソリューションをビルドすると、.XLSファイルと.DLL(私の C# コードを含む) が得られます。

をダブルクリックするだけで Excel シートを起動できるようになりました。.XLSすべての C# コードと、シートにドロップしたコントロールなどで機能するシートがあります。

シートはどのように参照してい.DLLますか? Excel ワークブック/シートのどの部分で、CLR を起動してアセンブリをホストする必要があることがわかりますか?

4

2 に答える 2

7

これによると(PintSizedCat に感謝)、Excel 2003 では次のことが起こります。

Microsoft Office アプリケーションは、カスタム ドキュメント プロパティをチェックして、ドキュメントに関連付けられたマネージ コード拡張があるかどうかを確認します。詳細については、「カスタム ドキュメント プロパティの概要」を参照してください。

マネージ コード拡張がある場合、アプリケーションは AddinLoader.dll を読み込みます。これは、Visual Studio 2005 Tools for Office Second Edition ランタイムのローダー コンポーネントであるアンマネージ DLL です。詳細については、「Visual Studio Tools for Office ランタイムの概要」を参照してください。

AddinLoader.dll は、.NET Framework を読み込み、Visual Studio Tools for Office ランタイムのマネージド部分を開始します。

Visual Studio Tools for Office ランタイムは、アプリケーション ドメインを作成し、アプリケーション ドメインがマイ コンピューター ゾーンを信頼しないようにポリシーを設定し、コード アクセス セキュリティ ポリシー ストアをチェックして、カスタマイズ アセンブリのポリシーを見つけます。

.NET Framework は、ポリシーに対してアセンブリによって提示された証拠を検証します。失敗すると、エラーが発生します。合格した場合、プロセスは続行されます。

カスタマイズで配置マニフェストを使用する場合、Visual Studio Tools for Office ランタイムはそれを使用してアセンブリの更新を確認します。更新が必要な場合は、すぐに実行されます。

Visual Studio Tools for Office ランタイムは、アセンブリをアプリケーション ドメインに読み込みます。

Visual Studio Tools for Office ランタイムは、カスタマイズ アセンブリで Startup イベント ハンドラーを呼び出します。詳細については、「Office プロジェクト イベント用の Visual Studio ツール」を参照してください。

私のテスト プロジェクトの Excel ワークブックには、次の 2 つのカスタム プロパティがあります。

_AssemblyName、値 = * _AssemblyLocation、値 = {533b2c13-a125-418a-bfff-9546b0762807}

これらは、VSTO ランタイムをアセンブリに向けるプロパティだと思います。

于 2009-02-11T10:23:04.780 に答える
6

これはすべてレジストリで行われ、同等のアプリケーションでキーを見つけることができるはずHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excelです。レジストリの別の場所にも登録されている COM アドインの経験が豊富です。このキーの下には、アプリケーションのロード方法を決定するために使用される LoadBehaviour 項目が必要です (2 は手動でロードされ、3 は起動時に自動的にロードされます)。

VSTO のセットアップ プロジェクトはありますか? そこには設定されているレジストリ キーが表示されますが、セットアップ プログラムは VSTO を GAC に登録します (ただし、私が言ったように VSTO に少し不安があるため、私の言葉を信じないでください)。

これがお役に立てば幸いです。さらに情報を見つけようとします。

編集 次のhttp://msdn.microsoft.com/en-us/library/bb386298.aspxを読んでみてください。これにより、アドインの説明が得られます。これは実際には、レジストリから読み込まれる COM ホストの単なるラッパーであり、VSTO はいくつかの相互運用性コードを使用してそれと通信します。

http://msdn.microsoft.com/en-us/library/23cw517s.aspx (Getting Started with Visual Studio Tools for Office、Getting Started と書かれているのでノックしないでください。役立つ情報がたくさんありますそこにあります) およびhttp://msdn.microsoft.com/en-us/library/hy7c6z9k.aspx (最初からリンクされており、VSTO アドインの概要です)。

于 2009-02-11T09:48:33.037 に答える