Visual Studio拡張機能をデバッグする方法


93

Visual Studio 2010のVSIX拡張機能を作成しているだけで、デバッグ方法を理解できません。

明白な方法の1つは、メッセージを出力することです。拡張テンプレートはを使用しTrace.WriteLine()ます。しかし、それはどこで出力されるのでしょうか?

回答:


184

Visual Studio Extensionsは、他のアプリケーションと同様にデバッグできます。ロードされた拡張機能でdevenvを起動するには、デバッグエクスペリエンスをセットアップする必要があります。以下をお試しください

  • プロジェクトを右クリックし、[プロパティ]を選択します
  • [デバッグ]タブに移動します

のラジオボタンをクリックしますStart External Program。devenv.exeバイナリをポイントします。私のマシンでは次の場所にあります

C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe

x64以外のマシンでは、「(x86)」部分を削除できます。

次に、コマンドライン引数をに設定し/rootsuffix Expます。これは、通常の構成ハイブの代わりに実験的ハイブを使用するようにVisual Studioに指示します。デフォルトでは、構築時のVSIX拡張機能は実験的なハイブに登録されます。

これでF5を実行でき、VSIXを利用可能な拡張機能としてVisual Studioを起動します。


この回答をありがとう、1つのヒットで問題を解決しました。とても感謝しております!
Richard Griffiths、

@JaredPar-vs2015拡張機能にvs2015プレビューの実験的なハイブに登録するように指示する方法はありますか?
Srikanth Venugopalan 2014

1
これは、デバッグとテストに使用するバージョンが同じ場合にのみ機能するようです。したがって、2013年にデバッグして2015年に拡張機能を実行することはできません。@ SrikanthVenugopalan
Maria Ines Parnisari

@miparnisari-はい、そうです。ただし、複数のバージョンをサポートしている場合は、少し面倒です。
Srikanth Venugopalan 2016年

2
こんにちは、VSIXを "利用可能な拡張機能"としてVSを起動するとはどういう意味ですか?利用可能な拡張機能はどこにありますか?[ツール]-> [拡張機能とアップデート]に移動すると、「インストール済み」、「オンライン」、「アップデート」しか表示されません。
2017

54

@JaredParによって受け入れられた回答は技術的には正しいですが、すべての開発者、コードの新しいコピーを取得するたび、およびcsproj.userファイルが削除されるたびに、それをやり直す必要があるという事実に悩まされています。そのようにすると、設定がcsproj.userファイルに保存されます。

より良いオプションは、設定をcsprojファイルに入れて、失われないようにすることです。残念ながら、Visual Studioではこれを自動的に行うことができないため、手動で設定を追加する必要があります。幸い、設定はどのプロジェクトでも同じです。

プロジェクトを右クリックしてアンロードし、もう一度右クリックしてcsprojプロジェクトファイルファイルを編集します。XMLで、最初のPropertyGroupに以下を追加します(例:の直後)TargetFramework

<StartAction>Program</StartAction>
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
<StartArguments>/rootsuffix Exp</StartArguments>

これには次の利点があります。

  • デバッグとリリースのために設定します
  • 現在実行しているVisual Studioのバージョンを実行します
  • これはソース管理にチェックインされるので、すべての開発者がそれを行う方法を覚えておく必要はありません:)

@MBulliがコメントに記載されているように、受け入れられた回答に変更を加えた場合は、*.csproj.userファイルを削除してください。その設定により、メインcsprojファイルに追加した設定が上書きされます。


6
ユーザー設定はプロジェクト設定よりも優先されるため、必ず* .csproj.userファイルを削除してください。
MBulli

ありがとうございます。受け入れられているものよりもはるかに効率的です。
Zverev Evgeniy

vs 2019で完璧に機能
x0n '11

2

OutputWindowHelper.OutputStringの方法は、「一般」の出力ウィンドウペイン(CtrlキーAltキー0)に書き込みます。この行を.csproj参照に追加して、VS 2013でこれを取得しました

<Reference Include="Microsoft.VisualStudio.Services.Integration, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

この回答もご覧ください。


注OutputWindowHelperはVisual Studio 2015には存在しません。VS2015のみを備えたマシンは、これが呼び出されるとエラーをスローします。github.com/landofjoe/NuspecPackager/issues/1
Quango

0

UnitTestExtensionをデバッグする場合は、ここで説明するように、vstest。*。exeプロセスにデバッガーをアタッチする必要もあります。そうしないと、アクティブ化ブレークポイントが表示される可能性がありますが、デバッガーがヒットすることはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.