現在、nuget.org への公式ビルド用の Nuget を使用してリリース ビルドをパッケージ化していますが、symbolsource.org へのシンボル ソース プッシュ用の Nuget を使用してデバッグ ビルドをパッケージ化しています。
編集: (Jon Skeet、Noda Time 開発からの偏りあり)
NuGet は、文書化されているように、NuGet ギャラリーとsymbolsource.org (または同様のサーバー) の両方へのプッシュをサポートするようになりました。残念ながら、ここには矛盾する 2 つの要件があります。
- デバッグを必要とせずにライブラリを使用する場合は、リリース ビルドが必要です。結局のところ、それがリリース ビルドの目的です。
- 診断目的でライブラリにデバッグする場合、適切な最適化をすべて無効にしてデバッグ ビルドが必要です。結局のところ、それがデバッグビルドの目的です。
それは問題ありませんが、NuGet では (私が知る限り) リリース ビルドとデバッグ ビルドの両方を同じパッケージで便利な方法で公開することはできません。
したがって、選択肢は次のとおりです。
- デバッグ ビルドをすべての人に配布し (ドキュメントの例に示されているように)、サイズやパフォーマンスの影響を受けないようにします。
- リリース ビルドをすべての人に配布し、デバッグ エクスペリエンスがわずかに低下します。
- 非常に複雑な配布ポリシーを採用し、個別のリリース パッケージとデバッグ パッケージを提供する可能性があります。
最初の 2 つは、デバッグ ビルドとリリース ビルドの違いの影響に要約されます。ただし、何らかの動作を確認するためにライブラリのコードにステップ インすることと、バグを発見したと思われるため、ライブラリのコードをデバッグします。2 番目のケースでは、ライブラリのコードをVisual Studio ソリューションとして取得し、その方法でデバッグする方がおそらく良いので、その状況にはあまり注意を払っていません。
私の誘惑は、デバッグを必要とする人が比較的少なく、リリース ビルドの最適化による影響をあまり受けないことを期待して、リリース ビルドを維持することです。(いずれにせよ、JIT コンパイラーはほとんどの最適化を行います。)
では、私たちが考慮していなかった他のオプションはありますか? バランスを崩す他の考慮事項はありますか? NuGet パッケージを SymbolSource にプッシュするのは、「ベスト プラクティス」が実際に確立されていないほど新しいものですか?