「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>NuGet]]

* 目次 [#z19e7331]
#contents

*概要 [#fa0976f2]
NuGetパッケージで展開されているモジュール内の~
デバッグ実行が必要になった時の手順も確立しておく必要がある。

*パッケージの登録 [#nd4008c8]
'*.pdbを同梱する場合は、ビルド時のフォルダ構成に注意すること(開発環境と一致させる)。~
ただし「[[ビルド環境と開発環境のソースファイルパスを一致させる(PDB)。]]」で対応できる。


**(Primary packageに)PDBを同梱 [#u34263f8]
「[[NuGetパッケージの開発と公開]]」を参照。

***ポイント [#j842631b]
'*.pdbファイル以外のすべてのファイル(*.dll、*.pdb、*.xml)を含める。

***手順 [#v3230e25]
-[[nuspecファイルの書き方の例>NuGetパッケージの開発と公開#ufd9e6b0]]

-[[NuGetパッケージの作成方法>NuGetパッケージの開発と公開#g07875e2]]

-パッケージ名~
{identifier}.nupkg

**Symbol Packageを利用 [#e3f16568]
NuGetは、Symbol Packageを作成し、SymbolSourceリポジトリに公開することもサポート

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

***準備 [#s8839bef]
-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>

-作成方法(以下の何れか)
 nuget pack [*.nuspecファイルパス] -Symbols
 nuget pack [*.csprojファイルパス] -Symbols

-パッケージ名~
{identifier}.symbols.nupkg

***登録 [#h43a29c4]
-概要
--NuGetプロトコルを実装するnuget.exe v4.1.0以上を使用
--nuget.orgとsymbolsource.orgの両方に登録を行う。

-操作

--便宜上、NuGetを使用してAPIキーを保存
 nuget SetApiKey Your-API-Key

--Primary packageをプッシュした後に、Symbol Packageをプッシュ~
--Symbol Packageをプッシュ
---Primary packageをプッシュした後に、Symbol Packageをプッシュ~
(*.symbols.nupkgとあれば自動的にsymbolsource.orgがターゲットになる。)
 nuget push *.symbols.nupkg

--Sourceオプションを使用して、Symbol Packageを別のSymbol Repositoryにプッシュ
---命名規則に従わないSymbol PackageをSymbol Repositoryにプッシュする場合
---nuget.exe 4.5.0以降では、Symbol Packageを個別にsymbolsource.orgにプッシュする必要がある。
---Sourceオプションを使用して、Symbol Packageを別のSymbol Repositoryにプッシュ~
命名規則に従わないSymbol PackageをSymbol Repositoryにプッシュする場合、~
 nuget push *.symbols.nupkg -source https://nuget.smbsrc.net/

--Primary package、Symbol Packageの両方を同時に両方のRepositoryにプッシュすることもできる。
---Primary package、Symbol Packageの両方をプッシュ~
Primary package、Symbol Packageの両方を、同時に両方のRepositoryにプッシュすることもできる。
 nuget push *.nupkg

---nuget.exe 4.5.0以降、~
Primary package、Symbol Packageを[-source]を指定して個別にプッシュ。
 nuget SetApiKey [ApiKey]
 nuget push *.nupkg -Source https://api.nuget.org/v3/index.json
 nuget push *.symbols.nupkg -source https://nuget.smbsrc.net/

>>※ https://nuget.smbsrc.net/ は、symbolsource.orgのプッシュURL。

*パッケージのデバッグ [#zd224c6d]

**(Primary packageに)PDBを同梱 [#uce0e316]
-*.pdbファイルが同梱されていれば、そのままデバッグ可能。
-ただし、[[ソースファイルの配置>#a439cd53]]については考慮が必要。

**Symbol Packageを利用 [#d56a4093]
-*.pdbファイルとソース ファイルを自動的に取得してソース コードのステップ インが可能

-ただし、以下の設定が必要になる。

--カスタム シンボル サーバ、ソース サーバの順序を有効にする。~
[ツール] ---> [オプション] ---> [デバッグ] ---> [全般]
---[マイ コードのみを有効にする]のチェックを外す。
---[.NET Framework ソースのステッピングを有効にする]のチェックを外す。

--[[ソース サーバを有効にする。>#a439cd53]]

--[[シンボル サーバ、ソース サーバの追加>#a439cd53]]~
[ツール] ---> [オプション] ---> [デバッグ] ---> [シンボル] ---> [シンボル ファイル (.pdb) の場所]
---http://referencesource.microsoft.com/symbols
---http://srv.symbolsource.org/pdb/Public or the authenticated variant (see above)
---http://srv.symbolsource.org/pdb/MyGet or the authenticated variant (see above)
---(other symbol servers with sources)
---http://msdl.microsoft.com/download/symbols
---(other symbol servers without sources)
[ツール] ---> [オプション] ---> [デバッグ] ---> [シンボル] ---> [シンボル ファイル (.pdb) の場所]~
---https://www.symbolsource.org/Public/Wiki/Using~
(同じバイナリのシンボルが含まれている場合があるため、順序に注意する。)
>
+http://referencesource.microsoft.com/symbols
+http://srv.symbolsource.org/pdb/Public~
or the authenticated variant (see above)
+http://srv.symbolsource.org/pdb/MyGet~
or the authenticated variant (see above)
+(other symbol servers with sources)
+http://msdl.microsoft.com/download/symbols
+(other symbol servers without sources)

*参考 [#w508407e]
**Microsoft Docs [#q57486a9]
-How to create NuGet symbol packages~
-NuGet パッケージの作成方法~
https://docs.microsof.com/ja-jp/nuget/create-packages/creating-a-package
--NuGet パッケージのプレリリース版~
https://docs.microsoft.com/ja-jp/nuget/create-packages/prerelease-packages
--NuGet シンボル パッケージの作成方法~
https://docs.microsoft.com/ja-jp/nuget/create-packages/symbol-packages
-How to Publish a NuGet Package~

-NuGet パッケージの公開方法~
https://docs.microsoft.com/ja-jp/nuget/create-packages/publish-a-package

-NuGet Command-Line Interface (CLI) Reference~
https://docs.microsoft.com/en-us/nuget/tools/nuget-exe-cli-reference
--NuGet CLI pack command~
https://docs.microsoft.com/en-us/nuget/tools/cli-ref-pack
--NuGet CLI push command~
https://docs.microsoft.com/en-us/nuget/tools/cli-ref-push

**SymbolSource.org [#h860d743]
Your source for debugging symbols... and sources.~

-HOME | What does it do?~
https://www.symbolsource.org/Public/
-Help | Using~
https://www.symbolsource.org/Public/Wiki/Using

-Register~
https://www.symbolsource.org/Public/Account/Register

-Metadata
--Public~
http://www.symbolsource.org/Public/Metadata
--MyGet~
http://www.symbolsource.org/MyGet/Metadata

**サンプル [#nacbfc35]
https://github.com/OpenTouryoProject/SampleProgram/tree/master/NeGet

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

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


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS