少し前にvsto excelアドイン開発で躓いたことがあったのでそれを解決した流れについてメモです。
Qiita初登校です。初歩的なハマり方をしているので、記事にするの少し恥ずかしいですが載せてみました。
概要
- vsto excelアドインの作成を行う
- 発行ウィザードをからアドインのインストーラを作成し、そのイン ストールを行う
- アドインの機能追加を行う(ここでデバッグ不能になりました)
大まかな環境
Visual Studio 2017 Community
Excel 2013 と 2016 VSTO アドイン開発
Windows 10 Home
流れ
vsto excelアドインの作成を行う
わかりやすく確認するために、VSTO ビジュアルなデザイナーのリボンを追加しそこに適当にイベントを追加してみます。
リボンにボタンを追加し、そのイベントにMessageBoxを表示する簡単なイベントを足してみました。
// using System.Windows.Forms;
private void button1_Click(object sender, RibbonControlEventArgs e)
{
var dialogResult = MessageBox.Show(@"Hello", @"Title", MessageBoxButtons.OKCancel);
if(dialogResult == DialogResult.OK)
{
System.Diagnostics.Trace.WriteLine("Ok");
}
}
button1_Clickイベントの中にブレークポイントを設定して、デバッグの実行を行います。
対応しているexcelがPCにインストールされているならexcelが立ち上がると思うので、適当なbookを開いてアドインタブからボタンに紐づけたイベントを呼び出します。
MessageBoxの表示が行われ、ブレークも作動します。
発行ウィザードをからアドインのインストーラを作成し、そのインストールを行う
ソリューションエクスプローラー上でアドイン開発に使用したプロジェクトを選択し、右クリックして発行ウィザードを起動します
。
出力フォルダ階層を適当に設定し、CD,DVD形式で出力します。
次へをクリックします。
完了をクリックします。
出力フォルダにできるSetup.exeからアドインをインストールします。  記述していませんでしたが、AddinTestが今回作成に使用したプロジェクトの名前です。
アドインの機能追加を行う
初めに作ったリボンに新しいボタンを追加し、新しいイベントを足してみます。
private void button2_Click(object sender, RibbonControlEventArgs e)
{
var dialogResult = MessageBox.Show(@"World", @"Title", MessageBoxButtons.OKCancel);
if (dialogResult == DialogResult.OK)
{
System.Diagnostics.Trace.WriteLine("Ok");
}
}
ここでデバッグ実行を行うと以下のようなエラーダイヤログが発生し、デバッグができなくなります。
ここに表示されている内容を勘違いしたのが今回の原因。
アドインタブの中に実装したボタンが表示されなくなり、当然ブレークポイントも機能しなくなります。
別バージョンのアドインが読み込まれているのでそのアドインをアンインストールをする必要があるとのこと。アンインストールしてきました。
その後再度アドイン開発を行っていたプロジェクトをデバッグ実行しました。
先ほどのエラーは発生しなくなったものの、依然としてアドインが読み込まれていません。
画像下部のパスの欄にある拡張子.vsto形式のファイルをダブルクリックするとアドインのインストールが開始されました。
この状態でデバッグ実行を行うとアドインが存在する状態で実行を行うことができ、ブレークポイントを使用することもできました。
これでひとまず解決です。
まとめ
エラーメッセージはちゃんと読みましょう。
ここを軽く読み飛ばしてしまったばかりに、半日ほどハマってしまいました。
とはいえ、初めてプロジェクトを実行したときはデバッグ実行と同時にアドインが自動で読み込まれていたので、機能を追加したときも同じく自動で読み込まれると思うじゃん。なんて言い訳をしたくもなったものです。