(2009/01/29 : Tech Days サイトなどへのリンクを追加)
環境:
.NET Framework 4.0 Community Technology Preview (CTP)
Visual Studio 2010 Community Technology Preview (CTP)
- No PIAs
こんにちは。
Tech Days (OBA 関連のセッション) で結果しかお見せできなかった VSTO 関連のデモについて、内容を記載します。
ここでご紹介する内容は、VSTO の機能の中の「配置」に関する部分のみにクローズアップしています。Tech Days でお見せした Visual Studio Tools for SharePoint のほうは含まれていませんし、VSTO の配置以外の進化についても含んではいません。(Visual Studio Tools for SharePoint のほうは、Channel9 や、Tech Ed EMEA のサイトのデモなどで動きをご確認ください。)
ここで紹介する機能 (これらは PDC のセッションで紹介されていた機能です) については、ダウンロード公開されている Visual Studio 2010 を使用して基本動作を確認することができます。
Download Center : Visual Studio 2010 and .NET Framework 4.0 Community Technology Preview (CTP) (英語)
http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&displaylang=en
Visual Studio 2010 CTP の VPC 環境の利用方法については、ディベロッパー製品開発部のブログ が参考になりますのでご参照ください。
まずは、No PIAs (NoPIA) についてです。
機能の背景
PIA (プライマリ相互運用アセンブリ、Primary Interop Assemblies) が配置に際していかにやっかいなものであるかは、VSTO (Visual Studio Tools for the Microsoft Office system) で実システムの開発をおこなった方にとっては痛いほどよくわかることでしょう。「ClickOnce で一緒に配布して終わりだろ?」 と思われるかもしれませんが、ClickOnce はご存じの通りユーザー単位での配置のソリューションであり、マシン単位での管理者権限によるインストールが必要となります。さらに msi (インストーラ) の配布で効率良く PIA を配布しようと思うと、これもまたまたいろいろなコツが必要となってきます (以前 下記にも掲載しました)。
/2008/03/31/office-2007-windows-installer-vsto-v3/
さらに、セッションでもご説明したように、PIA は、Excel、Word、Outlook などアプリケーションごとに大量のクラスを持ったアセンブリをインストールします。Office のバージョンによっても PIA は異なってくるなど、PIA に関する面倒な話は尽きないことでしょう。VSTO で実業務のアプリケーションを作成されたことがある方は、一度はこの PIA 地獄をご経験されたことがあるのではないでしょうか。(皆様のお客さんの環境などによって)
次バージョンではこうしたペイン(痛み)を解決すべく、フレームワークそのものにも手を入れたさまざまな改良が加えられています。Visual Studio 2010 は、PIA の呼び出しのためのスタブに相当するコードを作成するアセンブリに “効率的に” 埋め込みます。そして、.NET Farmework 4.0 は、フレームワークに搭載された新しい型システムを使って “動的に” PIA の呼び出しをおこなうようになっています。
動作確認
いつものように、Visual Studio でアドインプロジェクトを作成し、適当なコードを記述します。(今回は、[Word 2007 Add-in] プロジェクトを作成し、 Word 起動時の ThisAddIn_Startup メソッドに以下のコードを記述しましょう。)
private void ThisAddIn_Startup(object sender, System.EventArgs e){Globals.ThisAddIn.Application.Selection.InsertAfter("This is add-in test");}
参照しているアセンブリの中に、Microsoft.Office.Interop.Word が存在していると思いますが、この [Embed Interop Types] を「True」に変更し、リビルドをおこないます。
皆さんの開発マシンではすでに PIA が入っていることが多いと思いますので、「PIA が無くても動く」ことはわからないかもしれませんが、ildasm コマンドなどでアセンブリの中を覗くと、上記のコードで使用されている Application、Selection などの必要なクラスの型情報のみがアセンブリに添付されているのがわかります。(下記は、Reflector で確認をおこなっています)
関連ナンバー
Categories: Uncategorized
PingBack from http://blogs.msdn.com/tsmatsuz/archive/2009/01/28/tech-days-visual-studio-2010-vsto-ctp-1.aspx
LikeLike
TechDays で小松さん、松崎さんの以下のセッションを拝聴させていただきました。 Visual Studio 2010 の OBA 開発 講演者名:小松 真也、松崎 剛 SharePoint 開発においては、将来、さまざまな開発コンポーネントをより統合的に構築できるよう拡張されます。このセッションでは、
LikeLike