重要
符号包的新建议格式为 .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>
另请参阅
- 创建符号包 (.snupkg) - 符号包的新推荐格式