シンボル パッケージ (レガシ) の作成Creating symbol packages (legacy)

重要

シンボル パッケージに推奨される新しい形式は .snupkg です。The new recommended format for symbol packages is .snupkg. シンボル パッケージ (.snupkg) の作成」を参照してください。See Creating symbol packages (.snupkg).
.symbols.nupkg は、互換性のためにのみ、引き続きサポートされます。.symbols.nupkg is still supported but only for compatibility reasons.

nuget.org やその他のソースのためにパッケージをビルドするだけでなく、NuGet では、関連するシンボル パッケージを作成し、それを SymbolSource リポジトリに公開することもできます。In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the SymbolSource repository.

公開後、パッケージ コンシューマーは Visual Studio で自分のシンボル ソースに https://nuget.smbsrc.net を追加できます。それにより、Visual Studio デバッガーでパッケージ コードに入ることができます。Package consumers can then add https://nuget.smbsrc.net to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. このプロセスの詳細については、「Visual Studio デバッガーでのシンボル (.pdb) ファイルとソース ファイルの指定」を参照してください。See Specify symbol (.pdb) and source files in the Visual Studio debugger for details on that process.

シンボル パッケージを作成するCreating a symbol package

シンボル パッケージを作成するには、次の規則に従います。To create a symbol package, follow these conventions:

  • (コードを含む) プライマリ パッケージに {identifier}.nupkg という名前を付け、.pdb ファイルを除くすべてのファイルを含めます。Name the primary package (with your code) {identifier}.nupkg and include all your files except .pdb files.
  • シンボル パッケージに {identifier}.symbols.nupkg という名前を付け、アセンブリ DLL、.pdb ファイル、XMLDOC ファイル、ソース ファイルを含めます (後続のセクションを参照してください)。Name the symbol package {identifier}.symbols.nupkg and include your assembly DLL, .pdb files, XMLDOC files, source files (see the sections that follow).

いずれのパッケージも、.nuspec ファイルまたはプロジェクト ファイルから、-Symbols オプションで作成できます。You can create both packages with the -Symbols option, either from a .nuspec file or a project file:

nuget pack MyPackage.nuspec -Symbols

nuget pack MyProject.csproj -Symbols

pack には Mac OS X の場合は Mono 4.4.2 が必要であり、Linux 1 システムでは動作しないことに注意してください。Note that pack requires Mono 4.4.2 on Mac OS X and does not work on Linux systems. Mac の場合、.nuspec ファイルの Windows パス名を Unix 形式のパスに変換する必要もあります。On a Mac, you must also convert Windows pathnames in the .nuspec file to Unix-style paths.

シンボル パッケージ構造Symbol package structure

シンボル パッケージは、ライブラリ パッケージの場合と同じように、複数のターゲット フレームワークを対象とすることができます。そのため、lib フォルダーの構造はプライマリ パッケージとまったく同じになります (.pdb ファイルは DLL と共に含まれます)。A symbol package can target multiple target frameworks in the same way that a library package does, so the structure of the lib folder should be exactly the same as the primary package, only including .pdb files alongside the DLL.

たとえば、NET 4.0 と Silverlight 4 を対象とするシンボル パッケージのレイアウトは次のようになります。For example, a symbol package that targets .NET 4.0 and Silverlight 4 would have this layout:

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

ソース ファイルは、src という名前の別個の特別なフォルダーに置かれます。このフォルダーはソース リポジトリの相対的構造に従う必要があります。Source files are then placed in a separate special folder named src, which must follow the relative structure of your source repository. これは PDB に、一致する DLL のコンパイルに使用されるソース ファイルの絶対パスが含まれるためです。このパスは公開プロセス中に検出される必要があります。This is because PDBs contain absolute paths to source files used to compile the matching DLL, and they need to be found during the publishing process. 基本パス (共通パス プレフィックス) は取り除くことができます。たとえば、これらのファイルからライブラリが構築されるとします。A base path (common path prefix) can be stripped out. For example, consider a library built from these files:

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 フォルダーを除き、シンボル パッケージにはこのレイアウトが含まれている必要があります。Apart from the lib folder, a symbol package would need to contain this layout:

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

nuspec でファイルを参照するReferring to files in the nuspec

シンボル パッケージは規則によって、前のセクションで説明したフォルダー構造から構築できます。あるいは、マニフェストの files セクションでその内容を指定することで構築できます。A symbol package can be built by conventions, from a folder structure as described in the previous section, or by specifying its contents in the files section of the manifest. たとえば、前のセクションのようなパッケージを構築するには、.nuspec ファイルで次を使用します。For example, to build the package shown in the previous section, use the following in the .nuspec file:

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

シンボル パッケージを公開するPublishing a symbol package

重要

nuget.org にパッケージをプッシュするには、nuget.exe v4.9.1 以降を使用する必要があります。これは必須の NuGet プロトコルを実装します。To push packages to nuget.org you must use nuget.exe v4.9.1 or above, which implements the required NuGet protocols.

  1. 便宜上、最初に NuGet で API キーを保存します (パッケージの公開ページを参照してください)。この保存は nuget.org と symbolsource.org の両方に適用されます。symbolsource.org はあなたがパッケージ所有者であることを nuget.org に確認するためです。For convenience, first save your API key with NuGet (see publish a package, which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner.

    nuget SetApiKey Your-API-Key
    
  2. プライマリ パッケージを nuget.org に公開したら、シンボル パッケージを次のようにプッシュします。ファイル名の .symbols に起因し、symbolsource.org がターゲットとして自動的に使用されます。After publishing your primary package to nuget.org, push the symbol package as follows, which will automatically use symbolsource.org as the target because of the .symbols in the filename:

    nuget push MyPackage.symbols.nupkg
    
  3. 別のシンボル リポジトリに公開するには、あるいは命名規則に従わないシンボル パッケージをプッシュするには、-Source オプションを使用します。To publish to a different symbol repository, or to push a symbol package that doesn't follow the naming convention, use the -Source option:

    nuget push MyPackage.symbols.nupkg -source https://nuget.smbsrc.net/
    
  4. 次を利用し、プライマリ パッケージとシンボル パッケージの両方を両方のリポジトリに同時にプッシュすることもできます。You can also push both primary and symbol packages to both repositories at the same time using the following:

    nuget push MyPackage.nupkg
    

    注意

    nuget.exe 4.5.0 以上の場合、シンボル パッケージが symbolsource.org に自動的にプッシュされることはありません。次の手順で説明するように、シンボル パッケージを個別にプッシュする必要はありません。With nuget.exe 4.5.0 or above, the symbols packages are not automatically pushed to symbolsource.org. You would need to push the symbols packages separately as explained in the next step.

その場合、NuGet は、nuget.org にプライマリ パッケージを公開した後、MyPackage.symbols.nupkg があればそれを https://nuget.smbsrc.net/ (symbolsource.org のプッシュ URL) に公開します。In this case, NuGet will publish MyPackage.symbols.nupkg, if present, to https://nuget.smbsrc.net/ (the push URL for symbolsource.org), after it publishes the primary package to nuget.org.

関連項目See Also

Moving to the new SymbolSource engine (新しい SymbolSource エンジンへの移行) (symbolsource.org)Moving to the new SymbolSource engine (symbolsource.org)