レガシ シンボル パッケージ (.symbols.nupkg) の作成

重要

シンボル パッケージに推奨される新しい形式は .snupkg です。 「シンボル パッケージ (.snupkg) の作成」を参照してください。
.symbols.nupkg は、互換性のためにのみ、引き続きサポートされます。

nuget.org やその他のソースに向けたパッケージの構築だけでなく、NuGet では、シンボル サーバーに公開可能な関連するシンボル パッケージの作成もサポートされています。

レガシ シンボル パッケージの作成

レガシ シンボル パッケージを作成するには、次の規則に従います。

  • (コードを含む) プライマリ パッケージに {identifier}.nupkg という名前を付け、.pdb ファイルを除くすべてのファイルを含めます。
  • レガシ シンボル パッケージに {identifier}.symbols.nupkg という名前を付け、アセンブリ DLL、.pdb ファイル、XMLDOC ファイル、ソース ファイルを含めます (後続のセクションを参照)。

いずれのパッケージも、.nuspec ファイルまたはプロジェクト ファイルから、-Symbols オプションで作成できます。

nuget pack MyPackage.nuspec -Symbols

nuget pack MyProject.csproj -Symbols

pack には Mac OS X の場合は Mono 4.4.2 が必要であり、Linux 1 システムでは動作しないことに注意してください。 Mac の場合、.nuspec ファイルの Windows パス名を Unix 形式のパスに変換する必要もあります。

レガシ シンボル パッケージの構造

レガシ シンボル パッケージは、ライブラリ パッケージと同様の方法で複数のターゲット フレームワークを対象とすることができます。そのため、lib フォルダーの構造はプライマリ パッケージとまったく同じになります (.pdb ファイルは DLL と共に含まれます)。

たとえば、NET 4.0 と Silverlight 4 をターゲットとするレガシ シンボル パッケージのレイアウトは次のようになります。

\lib
    \net40
        \MyAssembly.dll
        \MyAssembly.pdb
    \sl40
        \MyAssembly.dll
        \MyAssembly.pdb

ソース ファイルは、src という名前の別個の特別なフォルダーに置かれます。このフォルダーはソース リポジトリの相対的構造に従う必要があります。 これは PDB に、一致する DLL のコンパイルに使用されるソース ファイルの絶対パスが含まれるためです。このパスは公開プロセス中に検出される必要があります。 基本パス (共通パスプレフィックス) は削除できます。たとえば、次のファイルから構築されたライブラリがあるとします。

C:\Projects
    \MyProject
        \Common
            \MyClass.cs
        \Full
            \Properties
                \AssemblyInfo.cs
            \MyAssembly.csproj (producing \lib\net40\MyAssembly.dll)
        \Silverlight
            \Properties
                \AssemblyInfo.cs
            \MySilverlightExtensions.cs
            \MyAssembly.csproj (producing \lib\sl4\MyAssembly.dll)

lib フォルダーを除き、レガシ シンボル パッケージには次のレイアウトが含まれている必要があります。

\src
    \Common
        \MyClass.cs
    \Full
        \Properties
            \AssemblyInfo.cs
    \Silverlight
        \Properties
            \AssemblyInfo.cs
        \MySilverlightExtensions.cs

nuspec でファイルを参照する

レガシ シンボル パッケージは、前のセクションで説明したフォルダー構造から、規則によって構築できます。あるいは、マニフェストの files セクションにその内容を指定することで構築できます。 たとえば、前のセクションのようなパッケージを構築するには、.nuspec ファイルで次を使用します。

<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>

関連項目