1

私たちは独自の nuget サーバーを維持しており、最近、SymbolSource サーバー ( http://www.symbolsource.org/ ; Web サイトは現在応答していません。代わりに、Web サイトの google cache または archive.org バージョンを試してください。ライブラリnuget で利用できる SymbolSource サーバーをセットアップする必要があります。) .pdbs とソースで nuget サーバーを補完します。この一連のインストール手順に従った後 ( http://www.xavierdecoster.com/setting-up-your-own-symbolsource-server-step-by-step) テスト ナゲット パッケージのシンボルをアップロードできました。Visual Studio 2013 がローカルでソースを見つけられないように、ナゲット形式で使用したマシンとは別のマシンでテスト パッケージを作成しました。Visual Studio 2013 の [ツール]、[オプション]、[デバッグ]、[シンボル] に SymbolSource サーバーのエントリを追加しました。[ツール]、[オプション]、[デバッグ]、[全般] で、[自分のコードだけを有効にする] のチェックを外し、[ソース サーバーのサポートを有効にする] をチェックし、[ソース ファイルが元のバージョンと完全に一致する必要がある] のチェックを外しました。

私のテスト ナゲット パッケージには意図的なエラー (0 による除算) が含まれていたので、何か興味深いものがあると思います。ホスト アプリケーションを作成してテスト ナゲット パッケージを追加し、エラーへのパスを呼び出すと、例外が発生しましたが、ソース コードを表示する代わりに、ソース .cs ファイルの場所を尋ねるダイアログ ボックスが表示されました。テスト ナゲット パッケージのソース コードは、それを使用するプロジェクトのマシン上にないため、[キャンセル] をクリックせざるを得ませんでした。Visual Studio は、nuget パッケージの外側のコードで壊れました。それは私が望んでいたものではありませんでした。Visual Studio が SymbolSource サーバーからソース コードを公開することを期待していました。

.pdb は正しくダウンロードされていました。呼び出し元のコードにブレークポイントを設定し、nuget パッケージからオブジェクトへの呼び出しに踏み込むと、nuget パッケージの正しいソース コードが表示されます。次に、nuget オブジェクトで例外をスローするコードを呼び出した場合、上記で期待したとおり、デバッガーは nuget パッケージのソースで中断しました。これが発生したら、プロジェクトを閉じて再起動できます。ナゲット アセンブリ内のブレークは、SymbolSource サーバーからダウンロードしたソース コードをポップアップ表示します。

私が推測できる限り、nuget パッケージで例外が発生すると、Visual Studio 2013 は .pdb ファイルをダウンロードします (または既にダウンロードしています)。次に、必要なソース ファイルを認識しますが、例外が発生した場合、SymbolSource サーバーからソースをダウンロードしません。代わりに、ローカル マシン上のソース ファイルの場所を尋ねるダイアログ ボックスが開きます。ソース コードが別の理由でダウンロードされた場合 (たとえば、そのソース コードに足を踏み入れた場合)、以前にダウンロードされたソース コードが検索されます。

これは、Visual Studio のバグであるか、Visual Studio の設定が抜けているようです。以前に nuget パッケージのコードにステップインせずに、例外で SymbolSource サーバーからソース コードをダウンロードするために、他に何かする必要がありますか?

4

0 に答える 0