VisualStudio2013の拡張機能を作る2

前回はウィザードに従うだけでしたが、とりあえずコマンドが一つ追加される拡張機能ができました。

コマンドの中身はコールバックメッソッドを弄れば好きに変更できます。古式ゆかしく、”Hello, World.” してみましょう。といってもウィザードで自動生成されたコードがメッセージボックスを表示する様になっているので出力されるテキストを書き換えるだけですが。

ウィザードが生成したコードでは「MenuItemCallback」というメッソド名になっています。
2014-01-15_193751

MenuItemCallbackの中身、表示されるメッセージを変更して。

private void MenuItemCallback(object sender, EventArgs e)
{
    IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell));
    Guid clsid = Guid.Empty;
    int result;
    Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(
               0,
               ref clsid,
               "VSPackage1",
               "Hello, World.",
               string.Empty,
               0,
               OLEMSGBUTTON.OLEMSGBUTTON_OK,
               OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
               OLEMSGICON.OLEMSGICON_INFO,
               0,        // false
               out result));
}

デバッグ実行。ツールメニューから「My Command name」をクリック。
2014-01-15_194206

2014-01-15_194223

メッセージボックスのテキストを書き換えただけでは寂しいので、エディタの現在行に出力してみます。

private void MenuItemCallback(object sender, EventArgs e)
{
    var dte = GetService(typeof(Microsoft.VisualStudio.Shell.Interop.SDTE)) as EnvDTE80.DTE2;
    var selection = dte.ActiveDocument.Selection as EnvDTE.TextSelection;
    selection.Insert("Hello, World.");
}
 

デバッグ実行して、適当なファイルを開き、コマンドを実行。
2014-01-15_195342

無事Hello, World.されました。
2014-01-15_195345

次はコマンドを増やしていきたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です