--- title: "シンボルおよびソースサーバ" order: 2 hidden: true ---
ProGet の NuGet フィードは、Visual Studio や WinDbg などのデバッガと互換性のあるシンボル / ソースサーバとして構成できます。ProGet シンボルサーバでサポートされているのは次の通りです。
☑ Microsoft PDB フォーマット (C/C++、.NET)
☑ ソースサーバ
☑ ポータブル PDB フォーマット (.NET)
☒ コネクタパッケージ の PDB
シンボルサーバが有効になっている場合、次のシンボルサーバ URL からローカルのフィードパッケージに保存されているシンボルファイルにアクセスできます。
http://«proget-server»/symbols/«Feed»
ProGet では、 Symbols 引数でビルドされた NuGet シンボルパッケージを使用できます。これらのシンボルパッケージは、.pdb ファイルと、場合によってはソースファイルも含む標準の NuGet パッケージにすぎず、慣例としてファイルの拡張子が .symbols.nupkg または .snupkg となっています。NuGet は 2 つのパッケージ (1 つはシンボルありで、もう 1 つはシンボルなし) を生成します。2 つ生成するのは、片方は NuGet.org へのプッシュ、もう片方はシンボルフィードへのプッシュを行うためです。
ProGet がすべての NuGet フィードにシンボルを統合することから、2 つのパッケージを用意する必要はありません。むしろ、かえって逆効果になります。シンボルパッケージは慣例により「通常のパッケージ」とのみ異なっているため、両方を ProGet フィードにプッシュしようとすると、競合が発生します。その場合、「最後にプッシュされたパッケージ」が元のパッケージを上書きします。
つまり、シンボルサーバを使用する場合は、シンボルパッケージのみを ProGet フィードにプッシュする必要があります。NuGet パッケージでシンボルがダウンロードされないようにするには、[Symbol Server settings (シンボルサーバ設定)] の [Manage Feed (フィードの管理)] ページで、trip symbol files from packages downloaded from this feed (このフィードオプションからダウンロードしたパッケージからシンボルファイルを削除する) を参照してください。
ProGet のシンボル / ソースサーバを最大限に活用するには、公開された NuGet パッケージにデバッグ可能なすべてのアセンブリのシンボルファイル (pdb) が、パッケージの /src/ フォルダにソースファイルが存在している必要があります。詳細については、シンボルパッケージのビルドに関する情報が載っている NuGet documentation (NuGet ドキュメンテーション) を参照してください。
ProGet が特定の NuGet フィードのシンボルを提供するには、それを行うための構成が必要となります。次のように、[Manage Feed (フィードの管理)] ページにアクセスし、Visual Studio 内で使用されるフィードのシンボルサーバの URL が正しいことと、[Symbol Server Configure] の下にあるオプションがチェックされていることを確認します。
シンボル付きのパッケージがフィードにアップロードされると、[Package Details (パッケージの詳細)] ページでシンボルがインデックスに登録されているかどうか、およびパッケージにソースが含まれているかどうかが次の通りわかります。
Download Package with Symbols (シンボル付きパッケージのダウンロード) のリンク (フィードがシンボルを削除するように構成されている場合に表示されます) をクリックすると、パッケージのダウンロードと内容の確認が行えます。
NuGet パッケージライブラリにデバッグするには、ProGet をシンボルサーバとして使用するように Visual Studio を構成する必要があります。メニューバーから [Debug (デバッグ)]> [Options... (オプション)] を選択し、ツリーメニューで [Debugging (デバッグ)]> [Symbol (シンボル)] をクリックします。先ほどの [Manage Feed (フィードの管理)] ページにあるシンボルサーバの URL を追加し、シンボルキャッシュディレクトリを指定します。デフォルトでは、Visual Studio は %LOCALAPPDATA%\Temp\SymbolCache を使用しますが、任意のパスも指定できます。
ソースサーバのサポートを構成するには、デバッグオプションツリーメニューで [Debugging (デバッグ)] > [General (一般)] を参照し、設定のオンオフが次の通りになっていることを確認します。
☐ Enable Just My Code
☑ Enable source server support
また、次のオプションのチェックを外さないといけない場合もあります。
☐ Enable .NET Framework Source Stepping
場合によっては、次のような設定になるケースもあります。
構成をテストするには、シンボルを含む NuGet パッケージを使用するコンソールアプリケーションを作成し、例外をスローする使い捨てコードを書いてから、Visual Studio の [Start (スタート)] ボタンをクリックしてデバッグを開始するのが簡単です。
すべてが正しく構成されている場合、Visual Studio はシンボルをローカルへ読み込もうとします。その際にシンボルが見つからない場合、ProGet シンボルサーバにクエリを実行し、例外のスローを行う行が次のようにハイライトされます。
シンボルサーバの失敗の原因はいろいろありますが、最も一般的なのは設定の誤りです。 Visual Studio がロードした PDB を表示するには、デバッグ中に [Debug (デバッグ)] > [Windows] > [Module (モジュール)] メニューオプションを選択し、リストから目的の DLL を見つけます。シンボルステータスが、DLL とダウンロードされたシンボルの両方へのバージョンとパスとともに表示されます。
ファイルパスの 16 進数の文字列では、次の通り、その先頭が ProGet にリストされている GUID になっているはずです。
今までサポートに寄せられたもので、最も一般的なエラーは次のとおりです。