マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • NuGetパッケージで展開されているモジュール内の
    デバッグ実行が必要になった時の手順も確立しておく必要がある。
  • 以下の2つの方法がある。
    • (Primary packageに)PDBを同梱
    • Symbol Packageを利用

変更になったもよう。

パッケージの登録

(Primary packageに)PDBを同梱する方法

NuGetパッケージの開発と公開」を参照。

ポイント

手順

  • パッケージ名
    {identifier}.nupkg

Symbol Packageを利用する方法

NuGetは、Symbol Packageを作成し、
「ソース サーバ」、「シンボル サーバ」に公開することもサポート

ポイント

  • *.dll、*.pdb、*.xmlに加え、ソースファイル(任意)を同梱。
  • libフォルダの構造はPrimary packageと完全に同じにする。
  • 追加で、ソースファイルのルートフォルダをsrcに指定する。

準備

  • nuspecファイルの書き方の例(srcはソースファイルのルートフォルダ)
    <files>
        <file src="Full\bin\Debug\*.dll" target="lib\net40" />
        <file src="Full\bin\Debug\*.pdb" target="lib\net40" />
        <file src="Silverlight\bin\Debug\*.dll" target="lib\sl40" />
        <file src="Silverlight\bin\Debug\*.pdb" target="lib\sl40" />
        <file src="**\*.cs" target="src" />
    </files>
  • nuspecファイルは、Primary PackageとSymbol Packageで共有(1つ)で良い(理由は後述)。
  • 「src="**\*.cs"」の「**」は、再帰的にフォルダを検索することを意味するので、
    • 階層構造がある src でも正しく同梱することが可能。
    • 必要であれば、作成したPackageを解凍して、同梱されるソースファイルを確認できる。
  • 作成方法
    • 以下のコマンドで、symbolとsrcが除外されたPrimary Packageと、Symbol Packageが生成される。
      nuget pack [*.nuspecファイルパス] -Symbols
    • Primary Packageにもsymbolとsrcを含めたい場合、別途、以下のコマンドを実行する。
      nuget pack [*.nuspecファイルパス]
  • パッケージ名
    {identifier}.symbols.nupkg

登録

  • 概要
    • NuGetプロトコルを実装するnuget.exe v4.1.0以上を使用
  • 操作
  • NuGetを使用してAPIキーを保存
    ※ APIキーは nuget.org より入手できる。
    nuget SetApiKey [Your-API-Key]
  • Symbol Packageをプッシュ
  • Primary packageをプッシュした後に、Symbol Packageをプッシュ
    nuget push *.symbols.nupkg
  • Sourceオプションを使用して、Symbol Repositoryにプッシュ
    Symbol Packageを別のSymbol Repositoryにプッシュ
    若しくは、命名規則に従わないSymbol PackageをSymbol Repositoryにプッシュ
    nuget push *.symbols.nupkg -source https://nuget.smbsrc.net/
  • Primary package、Symbol Packageの両方をプッシュ
    Primary package、Symbol Packageの両方を、同時に両方のRepositoryにプッシュすることもできる。
    nuget push *.nupkg
  • nuget.exe 4.5.0以降、
    Primary package、Symbol Packageを[-source]を指定して個別にプッシュ。
    nuget SetApiKey [Your-API-Key]
    nuget push *.nupkg -source https://www.nuget.org/
    nuget push *.symbols.nupkg -source https://nuget.smbsrc.net/

https://nuget.smbsrc.net/ は、symbolのプッシュURL。

ハイブリッドな方法

以下の登録手順で、Primary packageのPDBとSymbol Packageを切替え可能にできる。

nspecを2つ用意する。

  • Primary package用
    <files>
        <file src="Full\bin\Debug\*.dll" target="lib\net40" />
        <file src="Full\bin\Debug\*.pdb" target="pdb\net40" /> ※ pdbの場所を外す。
    </files>
  • Symbol Package用
    <files>
        <file src="Full\bin\Debug\*.dll" target="lib\net40" />
        <file src="Full\bin\Debug\*.pdb" target="lib\net40" />
        <file src="**\*.cs" target="src" />
    </files>

※ Primary packageで、pdbの場所を外すのは、
 PDB同梱パターンと、Symbol Packageパターンを切り替え可能にするため。

其々、Package化する。

  • Primary package用
    nuget pack [*.nuspecファイルパス]
  • Symbol Package用 ※ Primary packageを上書きするので注意!
    nuget pack [*.nuspecファイルパス] -Symbols

※ このため、出力先を分けるといい。

Push前の確認。

必要に応じて、Push前の確認を行う。

其々、Pushする。

  • APIキーを保存
    nuget SetApiKey [Your-API-Key]
  • Primary package用
    nuget push *.nupkg -source https://www.nuget.org/
  • Symbol Package用
    nuget push *.symbols.nupkg -source https://nuget.smbsrc.net/

※ Symbol PackageフォルダにPrimary packageは不要。

パッケージのデバッグ

(Primary packageに)PDBを同梱

  • *.pdbファイルが同梱されていれば、そのままデバッグ可能。
  • ただし、ソースファイルの配置については考慮が必要。

Symbol Packageを利用

  • *.pdbファイルとソース ファイルを自動的に取得してソース コードのステップ インが可能
  • ただし、以下の設定が必要になる。

ハイブリッドな方法の場合のデバッグ方法の切替

既定

切替

  • Primary packageのPDBに切り替える。
    • 「ソース サーバ」、「シンボル サーバ」を無効にする。
    • [シンボル ファイル (.pdb) の場所]に、Primary packageのPDBパスを指定する。
    • ローカルにファイルを配置する。

参考

Microsoft Docs

デバッグ可能なNuGetパッケージのサンプル

https://github.com/OpenTouryoProject/SampleProgram/tree/master/NuGet

ビルド環境と開発環境のソースファイルパスを一致させる(PDB)。


Tags: :.NET開発, :デプロイ, :デバッグ, :NuGet


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-04 (木) 16:09:03 (352d)