创建传统符号包(.symbols.nupkg)

重要

符号包的新建议格式为 .snupkg。 请参阅“创建符号包”(.snupkg)。
仍支持 .symbols.nupkg,但仅出于兼容性原因。

除了为 nuget.org 或其他源生成包之外,NuGet 还支持创建可发布到符号服务器的关联符号包。

创建遗留符号包

若要创建旧符号包,请遵循以下约定:

  • 将主要包命名为 {identifier}.nupkg 并包含所有文件,除了 .pdb 文件。
  • 命名旧符号包 {identifier}.symbols.nupkg ,并包括程序集 DLL、 .pdb 文件、XMLDOC 文件、源文件(请参阅以下部分)。

可以通过-Symbols选项创建任意包,无论是来自.nuspec文件还是项目文件。

nuget pack MyPackage.nuspec -Symbols

nuget pack MyProject.csproj -Symbols

请注意, pack 在 Mac OS X 上需要 Mono 4.4.2,并且不适用于 Linux 系统。 在 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>

另请参阅