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