创建旧式符号包 (.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>

另请参阅