はじめに
この記事では Visual Studio 2017 で
メニューにコマンドを追加する拡張機能を作成する方法を紹介していきます
検証環境
- Visual Studio Community 2017
手順
プロジェクトの準備
Visual Studio メニューの「ファイル>新規作成>プロジェクト」を選択します
左メニューで「Visual C#>Extensibility」を選択して
リストから「VSIX Project」を選択して
名前や保存場所を適当に設定して「OK」ボタンを押します
プロジェクトを作成したら「ソリューションエクスプローラー」で
プロジェクトを右クリックして「追加>新しい項目」を選択します
左メニューで「Visual C# アイテム>Extensibility」を選択して
リストから「Custom Command」を選択して
ファイル名を適当に設定して「OK」ボタンを押します
これでメニューにコマンドを追加する拡張機能を作成する準備が完了です
コマンドの実装
作成した「Command1.cs」ファイルの88行目あたりを見ると
下記のような処理が記述されています
private void MenuItemCallback(object sender, EventArgs e) { string message = string.Format( CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", this.GetType().FullName ); string title = "Command1"; // Show a message box to prove we were here VsShellUtilities.ShowMessageBox( this.ServiceProvider, message, title, OLEMSGICON.OLEMSGICON_INFO, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST ); }
「Command1.cs」ファイルの作成直後は
コマンドが選択されたらメッセージボックスを表示する処理が記述されています
本来はこの関数の中を変更してコマンドを実装していきます
今回はこのまま説明を続けます
コマンドの表示場所と表示名
「Command1Package.vsct」ファイルの40行目あたりに
下記のようなコードが記述されています
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
ここで、作成したコマンドを Visual Studio のどのメニューに追加するかを設定できます
最初は「IDM_VS_MENU_TOOLS」が記載されており、
これは、Visual Studio の「ツール」メニューにコマンドを追加することを表しています
ここに記載できる識別子は下記のページにまとめられています
https://msdn.microsoft.com/ja-jp/library/cc826118.aspx
また、59行目あたりには下記のようなコードが記述されています
<ButtonText>Invoke Command1</ButtonText>
これは、作成したコマンドの表示名になっており、
現在は「Invoke Command1」と表示されるようになっています
今回はコマンドの表示場所も表示名もデフォルトのままで説明を続けます
拡張機能のビルドとデバッグ
Visual Studio ツールバーの「開始」を選択します
すると、デバッグ用の Visual Studio が起動します
そして、Visual Studio メニューの「ツール」を選択すると
「Invoke Command1」という名前で項目が追加されており、これを選択すると
メッセージボックスが表示されることが確認できます
これで、メニューにコマンドを追加する拡張機能を作成する準備ができたので
あとは、「Command1.cs」ファイルでコマンドが押されたときの処理を自作したり、
「Command1Package.vsct」ファイルで、コマンドの表示場所や表示名を変更したりして
拡張機能を実装していきます
作成した拡張機能
作成した拡張機能は「【作成したプロジェクトの保存場所】\bin\Debug」フォルダ内に
.vsix という拡張子で保存されます
このファイルをダブルクリックすると「VSIX インストーラー」が起動して
作成した拡張機能を Visual Studio に反映することができます