Visual Studio 2012/2013 の拡張機能を紹介 (1)

Visual Studio 2010より、IDEの拡張機能を簡単に導入できるようになりました。

VSExtensions現在の拡張機能についておさらいしておきましょう。

Visual Studio拡張機能については、以下の記事もどうぞ:
Visual Studio 2012/2013 の拡張機能を紹介 (1)
Visual Studio 2012/2013 の拡張機能を紹介 (2)
OzCodeでかゆいところに手が届くデバッグを


Visual Studio拡張機能とは

VS2010以降では、「ツール」メニューの「拡張機能と更新プログラム」を選択することで、拡張機能を管理するダイアログを呼び出す事ができます。このダイアログから、オンラインで拡張機能を検索したり、インストール済の拡張機能の更新やアンインストールを行う事ができます。

VS2008までは自力でセットアップコード(WixやInstall Shieldを使って)を用意し、独自の配布形態をとる必要があったのですが、VS2010からは「*.vsix」という形式の専用セットアップパッケージがサポートされ、負担が軽減した事が大きいと思います。拡張機能がvsix形式となっていれば、上記ダイアログから、ダブルクリック→インストールで、簡単に機能を拡張することができます。

※余談ですが、ツールメニュー内には「アドインマネージャ」という項目もありますが、これは拡張機能とは関係ありません。というより、ここに項目が追加されていることを見た事がない… 私も詳細は分かりません。

VSGResharperまた、vsixはユーザー毎にインストールすることが前提となるため、インストール時に管理者権限を要求しないことも、インストールの負担軽減に良いようです。
とは言っても、拡張機能の内容によっては、システムレジストリ(HKLM)を変更する必要があったりするため、インストール方法がvsixに統一されたわけでもありません。この辺りは、非常に扱いやすくなったNuGetと異なり、まだまだ洗練の余地があるように思います。

オンラインでの検索は、Visual Studio Galleryに登録されているソフトウェアが対象です。このサイトには個人で作った拡張機能でも登録できます。現在、約5000タイトルが収録されており、有償無償に限らず、こんな拡張機能があるのかという発見があります。


NuGetとの違い

NuGet拡張機能やNuGetを殆ど使わない文化の所もあると思うので、その違いについても。

拡張機能はVSの機能を拡張します。たとえば、ソースコードエディタの機能を強化したり、デバッガの拡張を行ったり、Git/Subversionのようなソースコード管理ツールを統合したり、といった内容です。

NuGetはそうではなく、C#などのプロジェクトを開始後、そのプロジェクトのビルドに必要なサードパーティのライブラリを簡単に導入出来る仕組みです。

これまではこの部分も拡張機能が担っていたのですが、その場合は「参照設定」から、使用するライブラリを自分で探し出して、プロジェクトに追加する必要がありました。しかし、システムにインストールされた大量のライブラリから、目的のアセンブリ(DLL)を探し出すのは容易ではなく、また、大抵は組み合わせて使用するため、これを毎回行うのは頭痛の種です。

TooManyDependentLibraries2ため息が出る、端的な例。

更に、サードパーティ(特にオープンソースプロジェクト)のライブラリは更新頻度が高く、新しいバージョンがリリースされても、ライブラリの依存関係を把握するのが困難で、いつまでも古いバージョンのライブラリを使い続けるという「あるある」状態になってしまいます。

そこで、プロジェクトへのライブラリの導入を簡単にするために生み出されたのが「NuGet」拡張機能です。そう、NuGetもまた、VSの拡張機能の一つとなっています。

NuGetはプロジェクトで「これを使う」のように指定する・されることが多いため、少し探せば目的のパッケージが見つかりますが、拡張機能は使ってみないと分からないこともあるため、私の使っている拡張機能を紹介してみようと思いました。

Visual Studio 2012/2013 の拡張機能を紹介 (2) へ続きます。

投稿者:

kekyo

A strawberry red slime mold. Likes metaprogramming. MA. Bicycle rider. http://amzn.to/1SeuUwD

One thought on “Visual Studio 2012/2013 の拡張機能を紹介 (1)”

コメントは停止中です。