窓を作っては壊していた人のブログ

この謎のブログタイトルの由来を知るものはもういないだろう

Xamarin StudioのAddinを作っていたらハマってしまってteratailで質問したら解決した話

毎回タイトルにセンスがないのは仕様

ということでタイトルのまんまのことでして,Xamarin StudioのAddin作りをしてみました.

成果物はこちら

GitHub - yamachu/VariableConsoleWriter

選択した変数をSystem.Diagnostics.Debug.WriteLineで囲って,実行されたメソッド名と一緒に出力するコードを挿入するアドイン. f:id:yamachu_co:20161107230248g:plain

デバッガ使えとかいうツッコミはなしで

やったこととか色々

右クリックをすると表示されるコンテキストメニューにコマンドを追加したかったのですが,なかなかうまくいかずに苦戦してました.

公式ドキュメントを読んでみると

Creating contextual menus
TODO

...ha?TODOじゃないんじゃ,書いてくれ,な?

という感じでどうしようかなぁ〜と考えた時あることに気がつきました.
「エディタ自体もAddinみたいので拡張されてるんだし,それパクればいけるじゃん」

そう,これとか

ということで中身の確認をしてみたのですが,基本的にはやっていることは同じ,なのにこちらでは出てこない.

困り果てたのでteratailに相談だ!ということで質問を投下

teratail.com

回答がかなり早いタイミングで来たんですけど,回答者,すごい回答者が来てしまった...という感じでした.本当にありがたかったです.

要点をまとめると * Addin実行してる時のApplication Output見よう * アセンブリの参照が足りない

ということでした.完全にビンゴでして,f:id:yamachu_co:20161107225847p:plain

このMonoDevelop.SourceEditor2を参照に加えたら動きました. ちゃんとコンソールにERRORで出ていたのですが,完全に見逃していました.これからエディタ上でのContextMenuに何か加えたいという人はこの辺りにご注意を...

まとめ

  • Addin実行してる時のApplication Output見よう
  • アセンブリの参照の確認をしよう
  • 公式リポジトリを見て実装のベースとなるところを確認しよう
  • ちゃんと途中経過とか色々書けば回答してくださる人もあらわれてくれる