開発環境にExpression Webを入れたことによって、困ったことが起きてしまいました…orz
どうもVisual Studioのバグな気がします…。 (追記:ごめんなさい、あくまでも仕様だそうです。。。でもExpression Web入れただけでこうなるのは、納得いきません。Expression Webの問題なのでは…)
いつものようにVirtual PCで再現してみます。
もとはVisual Studio 2005で確認したのですが、
せっかくなのでVisual Studio 2008 Beta2で再現してみます…
開発環境: |
Windows XP Professional Visual Studio 2008 beta2インストール済み Office 2003インストール済み |
テスト環境: |
Windows XP Professional .NET Framework 2.0インストール済み Office 2003インストール済み |
とします。
まず開発環境でC:\WINDOWS\assemblyの中を確認します。
office
というアセンブリがあります。バージョンは11.0.0.0です。
(これはテスト環境も同じです。)
さて、Visual Studio 2008 Beta2を起動します。
新規でWindowsフォームアプリケーションを作成します。(TestOffice2003Appliとします。)
ソリューションエクスプローラでプロジェクトを右クリックしてコンテクストメニューで「参照の追加」を選択、「参照の追加」ダイアログの「COM」タブで「Microsoft Office 11.0 Object Library」を選択し「OK」を押します。
ソリューションエクスプローラのプロジェクトの「参照設定」に「Microsoft.Office.Core」が加わっています。
ツールボックスからボタンを置いて、適当にTextプロパティやサイズなどを変更します。
ダブルクリックしてコードエディタに切り替えます。
先頭のusing の所に
using Microsoft.Office.Core;
を追加します。
クリックイベントハンドラ(button1_Click)に例えば
MessageBox.Show(MsoDocProperties.msoPropertyTypeBoolean.ToString());
と書いてビルドします。
(とくに意味はありません。office.dllを使用するコードを書くだけです。)
実行して、ボタンを押すとメッセージボックスに「msoPropertyTypeBoolean」と表示されます。
ここでいったんVisual Studio 2008 beta2を終わらせます。
できたTestOffice2003Appli.exeをテスト環境にコピーして動くかどうか確認します。
もちろんテスト環境でも動きボタンを押すと「msoPropertyTypeBoolean」を表示します。
さて、開発環境に戻り、Expression Webをインストールします。
インストールを終えて…
C:\WINDOWS\assemblyの中を確認します。
知らない間にofficeがもうひとつ!
バージョンは12.0.0.0です。
再びVisual Studio 2008 Beta2を起動して、
先ほど作ったTestOffice2003Appliプロジェクトを開きます。
ビルドしなおします。
できたexeを区別できるようにTestOffice2003Appli2.exeとリネームします。
できたTestOffice2003Appli2.exeをテスト環境にコピーして動くかどうか確認します。
起動してボタンを押すと…
バージョン12のoffice.dllなんて参照した覚えはないのに…
(11の方を参照しなおしてもダメです…orz)
もちろん2007 Office(というかバージョン12のOffice.dll)が入っていれば正常に動きます。
しかも当初Expression Webのインストールで、
バージョン12のoffice.dllもインストールされるなんて気づきませんでした…orz
…これってVisual Studioのバグですよね?
追記:
さんに教えていただきましたが、バグではないそうです。
でも単にExpression Webをインストールしただけなのに…orz