38

ASP.NETMVC4.0ソースコードにステップインできるようにVisualStudio2012を構成しようとしています。(System.Web.Mvc.dll)。SymbolSourceの推奨構成に従いましたが、シンボルを読み込もうとすると、VisualStudioでシンボルを見つけることができません。

推奨される構成

シンボル/サーバーで使用するようにVisualStudioを構成するには、次の手順に従います。

  1. [ツール]->[オプション]->[デバッガー]->[一般]に移動します。
  2. 「マイコードのみを有効にする(管理対象のみ)」のチェックを外します。
  3. 「.NETFrameworkソースステッピングを有効にする」のチェックを外します。はい、誤解を招く可能性がありますが、そうでない場合、Visual Studioはカスタムサーバーの順序を無視します(詳細を参照)。
  4. 「ソースサーバーのサポートを有効にする」にチェックを入れます。
  5. 「ソースファイルが元のバージョンと完全に一致する必要がある」のチェックを外します</li>
  6. [ツール]->[オプション]->[デバッガー]->[シンボル]に移動します。ローカルシンボル/ソースキャッシュ用のフォルダを選択します。
  7. 「シンボルファイル(.pdb)の場所」の下にシンボルサーバーを追加します。一部のサーバーには、ソースの有無にかかわらず、同じバイナリのシンボルが含まれている可能性があるため、正しい順序に注意してください。次の設定をお勧めします。

ソースコードがCodePlexで利用できることは知っていますが、GACからMvcを参照解除して、ローカルで構築されたアセンブリを参照する代わりに、シンボルサーバーを使用してコードにステップインすることに特に関心があります。

誰かがMVC4.0でこれを行うことに成功しましたか?

4

7 に答える 7

15

メジャーリリースだけでなく、それ以上のサービスを提供するシンボルサーバーを追加するだけです。

これを試してください。ほとんどのマイナービルドが含まれています。

http://srv.symbolsource.org/pdb/Public

確認:

管理者としてVSを実行します。

シンボルキャッシュディレクトリに何かがダウンロードされていることを確認してください。

指定したモジュールのみを選択します。「System.Web.Mvc.dll」を追加します

コードにブレークポイントを設定します。デバッグを開始します。ブレークポイントがヒットしたら、任意のmvc.dll行のコールスタックを右クリックします。シンボルがロードされていることを確認します。ロードされている場合は、1つのコールスタック行をダブルクリックしてMVCソースを開きます。

困ったところに戻ってください。

于 2012-11-07T05:09:38.367 に答える
6

LukeGumbleyの回答にいくつかの改良を加えます。

Microsoftは、開発者の生活を楽にすることを目指しています。MVCバージョンインストーラーをリリースするときはいつでも、ダウンロードするソースもあるはずです。そのため、ソースを使用して、インストーラーによってインストールされたものを調べたり、MVCをデバッグしたりできます。

MVCデバッグ情報をダウンロードする方法に戻ります。システムにMVC4がインストールされている場合、Visual Studio(私は2010を使用)は前述のサーバーからMVCPDBファイルをダウンロードしようとはしません。この場合、デバッガーを実行すると、VisualStudioはGACのMVCを使用します。

私はルーク・ガンビーによって提案された方法を試しました。ただし、MVCをアンインストールすると、MVCプロジェクトは読み込まれず、テンプレートがなくなったため、新しいMVCプロジェクトを作成できません。したがって、MVCをアンインストールしないでください。その場合でも、再インストールする必要があります。これは時間を無駄にします。

本当に必要なのは、Visual Studioを終了し、コマンドを実行することです。

gacutil /u System.Web.Mvc

次に、問題のあるフォルダに移動しC:\Windows\Microsoft.NET\assembly\GAC_MSIL、削除するか、名前を変更しSystem.Web.Mvcます。この後、Visual Studioを起動し、NuGetからMVCパッケージをフェッチします。

于 2013-01-16T15:32:13.510 に答える
4

私はまったく同じ問題を抱えていました(正しいバージョンですが、シンボルはありません)が、1日ほどすべてを試した後、動作させることができました. これらは私のために働いた包括的な指示であり、不要な手順が含まれている可能性があります。

  1. SymbolSource にサインアップし、認証済み URL フォームを使用してVS の指示に従います
  2. プログラムの追加と削除で MVC のすべてのバージョンをアンインストールする
  3. GAC から MVC アセンブリを削除します(問題は MVC の変更に関するものですが、GAC の回答は適切です)。
  4. NuGet を使用して、プロジェクトへの MVC 4 参照を削除してから再インストールします。
  5. デバッグを開始し、モジュール ウィンドウを開き、System.Web.MVC が表示されたら、'Symbols loaded' が隣にあることを確認します。

(必要に応じて再起動をふりかけます。私にとって重要な最後のステップは、NuGet リファレンスを再インストールすることでした)

私の理論では、ローカル参照よりも実行時に GAC ライブラリが使用されるため、検索時にシンボルが見つからないというものです。GAC から MVC を削除してから NuGet 参照を再インストールすると、ローカル参照が使用されているようで、シンボルが見つかります。System.Web.MVC.dll ファイルは、NuGet と GAC の間でバイナリが同等であるため、直感に反しますが、日付は異なります。

Razor で同じことをしようとしたのですが、うまくいきませんでした。

于 2013-01-03T21:06:34.753 に答える
4

あなたの質問に直接答えることはできずSystem.Web.Mvc.dll、ASP.NET MVC 4.0 のシンボル (.pdb) を含む URL を提供することはできませんが、おそらく別の方法で問題を解決するお手伝いができます。

よく知られているように (たとえば、こちらを参照)、Microsoft はhttp://aspnetwebstack.codeplex.com/で .NET の最新のソース コードを提供しています。この投稿では、 Nightly バージョンの ASP.NET (コードの現在の開発者の状態) の使用方法について説明しています。以前に Git を使用していなかった場合は、ASP.NET 4.5 のRTM バージョン(ASP.NET MVC 4.0 を使用) のダウンロードで問題が発生する可能性があり、Nightly バージョンの代わりに使用することをお勧めします。それでも、RTM バージョンの完全なソース コードをダウンロードするのは簡単です。Git ではコードのコピーをブランチまたはタグ付きバージョンに保存できることを知っておく必要があります。完全なコードのいくつかの以前のバージョンにアクセス (およびダウンロード) できる方法です。リンクたとえば、別のリンクの代わりにjQuery 1.8.2を提供すると、不安定になる可能性のある最新の開発者バージョンが得られます。RTM バージョンのソース コードをダウンロードするには、「v2-rtm」ブランチを選択し、「ダウンロード」をクリックするだけです。

ここに画像の説明を入力

リンクを使用して、 「v2-rtm」ブランチを直接選択できます。

繰り返しますが、それはあなたが尋ねたとおりではありません。ASP.NET ソース コードのコンパイルも少し難しいことはわかっていますが、情報を書くことにしました。誰かがより良い解決策を提案してくれたら、それは私にとっても興味深いことです。

于 2012-10-31T10:33:12.587 に答える
1

ReSharper には、いつでもコードにステップインできる便利なダイアログが用意されていることから始めましょう。

ここに画像の説明を入力

したがって、ソース コードにドリルダウンすると、次のコード画面が表示されます。

ここに画像の説明を入力

しかし、私はこれを手作業で行うことに興味を持ちました。適切な pdb 構成から始めました。

ここに画像の説明を入力

その後、次のエラーが発生しました。

ここに画像の説明を入力

C:\Users\Andrew\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\System.Web.pdb\CA49C4332DE847FA967F58AFF370B70E1\System.Web.pdb次に、 toをコピーしましたC:\Users\Andrew\AppData\Local\Temp\SymbolCache\System.Web.pdb(ルックアップ パスと一致させるため)。その後、私はこれに遭遇しました:

ここに画像の説明を入力

そして、不一致のビルドは、デバッグではなく、ソースの参照にのみ適していることが判明しました。(現在のマシンには VS2012 RC があるため、MVC ライブラリは RTM ではありません)。それらが一致する場合は、ソースになります。

ルックアップ パスがシンボルの構成に合わせて調整されない理由はまだわかりません。お役に立てれば。

于 2012-11-04T10:41:39.937 に答える
1

この同じ問題を解決しました。

問題は、GAC に保存されている dll が、symbolsource.org で公開されている pdb と正確に対応していないことです。symbolsource にあるものは、Nuget から入手できる最新バージョンに明らかに対応しており、GAC にあるものは、.NET Framework 4.5 と共にインストールされたものでなければなりません。(.Net は、プロジェクトにローカルなものを使用しようとする前に、GAC にあるものを使用します。デバッグ時に、Debug->Windows->Modules に移動すると、System.Web.Mvc.dll からのものが表示されます。そのパスに応じたGAC)

私がしたことは、Nuget からダウンロードしたソリューションのパッケージ フォルダーにある System.Web.Mvc.dll を GAC に含めることでした。これは、VS コマンド プロンプトで gacutil を使用して行うことができます (VS コマンドを管理者として実行します)。

同じモジュール ウィンドウを確認し、System.Web.Mvc.dll を右クリックしてから、Symbol Load Information を確認できます。「古い」GAC dll を使用すると、(その一部) のようなメッセージが表示されます。

SYMSRV: http://srv.symbolsource.org/pdb/Public/System.Web.Mvc.pdb/1E540B87149F4031B9CDEACAD8D771231/System.Web.Mvc.pdbが見つかりません

ここでサブフォルダー 1E540B87149F4031B9CDEACAD8D771231 に注目してください (あなたのものは異なるかもしれません)

Nuget から最近ダウンロードした GAC dll を置き換えた後、メッセージは次のようになります。

SYMSRV: http://srv.symbolsource.org/pdb/Publicからの System.Web.Mvc.pdb : 336067 バイト

http://srv.symbolsource.org/pdb/Public : シンボル サーバーからダウンロードされたシンボル。

C:\Users\\AppData\Local\Temp\SymbolCache\System.Web.Mvc.pdb\68B2330E48624B6C9DE05BED1C8C320F1\System.Web.Mvc.pdb: シンボルが読み込まれました。

symbolsource.org で検索されたサブフォルダー 68B2330E48624B6C9DE05BED1C8C320F1 が正しく検出されていることに注意してください。

お役に立てれば

于 2013-06-28T10:24:32.107 に答える
0

ここにいくつかの関連情報があります: http://aspnetwebstack.codeplex.com/discussions/399312 そしてここ: Symbolserver を使用して ASP.NET MVC4 の夜間ビルドにデバッグします

于 2012-11-15T19:34:18.097 に答える