トップ回答者
VisualStudio2012 アドインが起動しない

質問
-
Visual Studio Professional 2012 を使っており、簡単なアドインを作成・利用したいと考えています。
アドインウィザードを使って作成したプロジェクトで「デバッグ実行」をすると期待通りの挙動を確認できるのですが、いざ、そのアドインを別プロジェクトから使おうとすると、うまくいきません。以下、詳細を記しますので、もし何かお分かりになる方がいらっしゃいましたら、原因や解決手段等、ご教示いただけると幸いです。
1.アドインウィザードでプロジェクト作成します。(Visual C#)
2.Execメソッドに必要な機能を実装します。
3.F5でデバッグ開始、Visual Studio が新たに起動されます。
4.新たに起動したVSは「ツール」メニューに、作成したアドインの名前が表示されます。
(アドインウィザードでそうなるように設定したので、これは想定通りの挙動です)
5.そのメニューを選択すると、実装した通りの挙動が確認できます。
6.「ツール」メニューの「オプション」から、このアドインにキーボードショートカットを割り当てます。
7.割り当てたキー入力を行うことで、やはり実装した通りの挙動が確認できます。
・・・というわけで、ここまでは問題ありません。
8.プロジェクトフォルダに作成された MyAddIn.dll と MyAddIn.AddIn を、
C:\Users\UserName\Documents\Visual Studio 2012\AddIns
にコピーします。
10. Visual Studio を起動しなおし、適当な別プロジェクトを開きます。
11.しかし「ツール」メニューに、作成したアドインの名称は表示されません。
12.キーボードショートカットを割り当てたくても、コマンドの一覧の中にアドインの名称がないので、それも出来ません。
13.「ツール」メニューの「アドインマネージャ」を起動すると、作成したアドインの名称が表示されています。
14.作成したアドインにチェックを入れ、また「スタートアップ」の項目にもチェックを入れ、Visual Studio を再起動します。
15.結果は変わらず、やはり「ツール」メニューにも、キーボード割り当て可能なコマンド一覧にも、
作成したアドイン名称は表示されず、呼び出すことが出来ません。
以上のような状況なのですが、作成したアドインを別プロジェクトから利用する方法について、
何か不備・見落としなどお気づきの方がいらっしゃいましたら、ご教示いただけませんでしょうか。
よろしくお願いいたします。
回答
-
こんにちは。
「C:\Users\UserName\Documents\Visual Studio 2012\AddIns」に格納されているファイルは、
上記のMyAddIn.dllとMyAddIn.AddInのみでしょうか?その状態でMyAddIn.dllを削除しVisualStudioを起動しなおした場合、
アドインロード時のエラーが発生しますか?その後、上記フォルダを空にして起動 → もう一度MyAddIn.dllとMyAddIn.AddInを格納などの手順を行ってみてください。
それでダメであればMyAddIn.AddInを同一フォルダに別名で複製してみた時、VisualStudioを起動するとどうなるでしょうか。私はVisualStudio2010しか検証環境がなかったのですが、
一度フォルダ内を空にするまでは読み込めたり、読み込めなかったりが繰り返されている不安定な状態でした。
試してみてください。- 回答としてマーク inu_tarou 2016年3月17日 8:01
-
Visual Studio Professional 2012でinu_tarouさんの手順で試したところ100%再現するので少し動作を調べてみました。
アドインのプロジェクトを作成した際に「C:\Users\UserName\Documents\Visual Studio 2012\Addins」フォルダに「アドイン名 - For Testing.AddIn」というようなテスト用のアドインファイルが生成され、デバッグ時にはこのアドインがVisual Studioに登録されます。
一般にアドインが一度登録された後にAddinファイルを削除やリネームして、再度Visual Studioを起動させると、以後このアドイン(同クラス名)は読み込まなくなってしまうようです。
なので、手順には書いてありませんでしたが「アドイン名 - For Testing.AddIn」を削除されたときに本番の方のアドインも読み込まなくなってしまったのではと思います。(デバッグ時と同じクラス名なので。。)
こうなってしまった時の問題を解消するコマンドがVisual Studioに用意されているようです。
コマンド プロンプトで、
devenv /resetaddin MyAddin1.Connect
(ここでMyAddin1はアドインのネームスペース、Connectはアドインのクラス名に置き換えてください。)
と入力しVisual Studio 2012を起動すると指定されたアドインを再度読み込むことができます。
すべてのアドインを読み込むコマンドは
devenv /resetaddin *
とすればよいようです。以上参考になりましたら幸いです。
参考: http://www.meadow.se/wordpress/refresh-visual-studio-add-in-settings/
- 回答の候補に設定 いわさ Tak1waMVP, Moderator 2016年3月17日 4:12
- 回答としてマーク inu_tarou 2016年3月17日 8:01
すべての返信
-
こんにちは。
「C:\Users\UserName\Documents\Visual Studio 2012\AddIns」に格納されているファイルは、
上記のMyAddIn.dllとMyAddIn.AddInのみでしょうか?その状態でMyAddIn.dllを削除しVisualStudioを起動しなおした場合、
アドインロード時のエラーが発生しますか?その後、上記フォルダを空にして起動 → もう一度MyAddIn.dllとMyAddIn.AddInを格納などの手順を行ってみてください。
それでダメであればMyAddIn.AddInを同一フォルダに別名で複製してみた時、VisualStudioを起動するとどうなるでしょうか。私はVisualStudio2010しか検証環境がなかったのですが、
一度フォルダ内を空にするまでは読み込めたり、読み込めなかったりが繰り返されている不安定な状態でした。
試してみてください。- 回答としてマーク inu_tarou 2016年3月17日 8:01
-
Visual Studio Professional 2012でinu_tarouさんの手順で試したところ100%再現するので少し動作を調べてみました。
アドインのプロジェクトを作成した際に「C:\Users\UserName\Documents\Visual Studio 2012\Addins」フォルダに「アドイン名 - For Testing.AddIn」というようなテスト用のアドインファイルが生成され、デバッグ時にはこのアドインがVisual Studioに登録されます。
一般にアドインが一度登録された後にAddinファイルを削除やリネームして、再度Visual Studioを起動させると、以後このアドイン(同クラス名)は読み込まなくなってしまうようです。
なので、手順には書いてありませんでしたが「アドイン名 - For Testing.AddIn」を削除されたときに本番の方のアドインも読み込まなくなってしまったのではと思います。(デバッグ時と同じクラス名なので。。)
こうなってしまった時の問題を解消するコマンドがVisual Studioに用意されているようです。
コマンド プロンプトで、
devenv /resetaddin MyAddin1.Connect
(ここでMyAddin1はアドインのネームスペース、Connectはアドインのクラス名に置き換えてください。)
と入力しVisual Studio 2012を起動すると指定されたアドインを再度読み込むことができます。
すべてのアドインを読み込むコマンドは
devenv /resetaddin *
とすればよいようです。以上参考になりましたら幸いです。
参考: http://www.meadow.se/wordpress/refresh-visual-studio-add-in-settings/
- 回答の候補に設定 いわさ Tak1waMVP, Moderator 2016年3月17日 4:12
- 回答としてマーク inu_tarou 2016年3月17日 8:01
-
ご返信、ありがとうございました。
ご教示いただいた通り、devenv を使ってリセットを行うことで、他プロジェクトからも無事、自作のアドインを利用することが出来るようになりました。大変たすかりました。
・・・個人的には、アドインを自作する場合、今回のようにデバッグしてみる→うまく動いたら正式に(広く一般に配布した場合と同じ状態で)起動できるようにする、という手順をふむのは普通のことだと思っていましたが、この手順だと起動しなくなってしまうというのは、やや不思議な感じがします。どういう使い方を想定しているのだろうか・・・。
ともあれ、今回は非常に助かりました。ありがとうございます!
-
ご返信ありがとうございます。
「C:\Users\UserName\Documents\Visual Studio 2012\AddIns」に格納されているファイルは、自作アドインだけではなく、他者が作成し配布していたものも1点、含まれていました。
今回のことで色々と調査した結果、上記フォルダだけではなく「C:\MyDocuments\Visual Studio 2012\AddIns」にも自作アドインのテスト用 AddIn ファイルが作成されていたり、こちらには dll の所在が絶対パス(プロジェクトフォルダに生成されるdllのパス)を指定していたり、配布用とは別にテスト用のアドインが登録されてしまうルートが残るようで、そのあたりがバッティングして予期せぬ動作をしているのかもしれない、と思いました。
-
https://msdn.microsoft.com/ja-jp/library/1326zbk3(v=vs.110).aspx
アドインの読み込み元はデフォルトで複数設定されています。
広く一般に配布するという意味では、セットアップファイルを用意して試してみてはどうでしょうか。
http://www.atmarkit.co.jp/fdotnet/special/vsaddinintro03/vsaddinintro03_01.html
-
>Tak1wa 様
ご返信、ありがとうございます。
>広く一般に配布するという意味では、セットアップファイルを用意して試してみてはどうでしょうか。
>http://www.atmarkit.co.jp/fdotnet/special/vsaddinintro03/vsaddinintro03_01.htmlはい、実は最初にこちらの方法を試したのでしたが、Visual Studio 2012 Professional ですと、手順1「セットアッププロジェクトの作成」のところでこのサイト通りの設定を行うことができなくなり、別の方法を探し始めた、という経緯がありました。
サイト通りの設定を行うことができない、というのは、具体的には、
・「プロジェクトの種類」-「セットアップと配置」に「セットアッププロジェクト」という種類のテンプレートが存在しない。
・替わりに(?) Install Shield Limited Edition の有効化 という項目のみがあるが、これを選んでもソリューションにプロジェクトが追加されない。
という状況でした。
正式に、インストーラを作成する手順が提供されているのであれば、試してみたいですね。
-
参考サイトは古いVisualStudioが対象でしたね。
VS2012からは従来のセットアッププロジェクトは無くなったのでした。Install Shield Limited Editionを有効化し、それを使ってインストーラを作成する必要がありそうですね。
なので手順も少し異なるかもしれません。