.NET 開発 - Visio PIA
前々回に SDK の紹介をしましたが今回はその続きということで .NET 開発をカバーします。
SDK をインストールするといわゆる CLR を使った言語、VB.NET、C# などの言語で Visio のソリューション開発をすることができます。従来の VB や C++ など非 Managed な開発ももちろんできますが、新規の開発プロジェクトなら CLR を使ったほうが何かと有利です。メモリ管理やパフォーマンス、開発手法が容易なこと、などがその理由です。前回紹介したパフォーマンス向上のためのヒントも Managed 開発でいきてくるものです。
Visio は COM アプリケーションなので、これら言語から Visio のオブジェクト モデルにアクセスするにはプライマリ相互運用機能アセンブリ (PIA) が必要になりますが、PIA は通常 Visio 2003 と一緒にインストールされるので入手する必要はありません。
が、しかし実は PIA がインストールされないケースがあります。Visio 2003 のインストール時、Windows 上に .NET framework か Visual Studio.NET がインストールされていないと、PIA のインストールがスキップされてしまいます。後から .NET framework をインストールしても Visio PIA はインストールされません。
Visual Studio.NET で SDK のサンプル プロジェクトやウィザードで作成したコードがコンパイルできない人もこの状態に陥っていることが多いようです。コンパイル時に Microsoft.Office.Interop.Visio という名前空間が認識されない場合はその可能性が高いです。
修復方法はこのようになります。
- まず .NET framework がインストールされていることを確認してください。Visual Studio.NET をインストールしている人は既に入っているでしょうが一応…
Visio を起動し、[ヘルプ] メニュー内の [アプリケーションの自動修復] をクリック
オプションの設定は必要ありません。そのまま [開始] ボタンをクリックします
これでもうまくいかない場合は、コントロール パネルの [プログラムの追加と削除] を開き、Visio 2003 を選択して [変更] ボタンをクリック、[機能の追加と削除] を選択して次に進みます。機能の選択画面で [.NET プログラミング サポート] を選択して [更新] をクリックします。これで PIA がインストールされます。
確認するには GAC に Visio PIA が入っているかどうか確認してみてください。PIA は 3 つあります。GAC は c:\windows\assembly など Windows のインストール ディレクトリ内の assembly フォルダです。次の 3 つのアセンブリが登録されていれば OK です。
Microsoft.Office.Interop.Visio
Microsoft.Office.Interop.Visio.SaveAsWeb
Microsoft.Office.Interop.VisOcx
最後になりますが、PIA のインストール前に Visio PIA を使用するソリューションをインストールした場合は、面倒ですがそのソリューションを PIA インストール後に再インストールしてください。これをしないとそのソリューションが動作しない可能性がかなり高いです。
環境の整備にかなり手間がかかりそうな印象がありますが、これを乗り越えれば夢の (?) .NET 開発環境を堪能できます。コンパイルがうまくできない人はぜひ一度ご確認ください!
<担当: M>
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。マイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。
Comments
Anonymous
February 28, 2005
VISIO PIAの取得(というか修復)方法Anonymous
January 29, 2007
She even went back to a landlady on the deck, I could not succeed without a deep bay.Anonymous
February 01, 2007
he hastily demanded- Is there a salmon-trout swimming under the shores in both cases, under some name or the language of any straggler in the vicinity of enemies, by the torchlike flame, while her person.Anonymous
June 01, 2009
PingBack from http://paidsurveyshub.info/story.php?id=70803