.nuspec 是 NuGet 包的 XML 元数据文件,定义包标识、依赖、内容等;必须含 根元素和 ,含必填 、、、,通过 指定打包路径, 声明依赖,支持多框架分组及高级字段如 、 等。

.nuspec 是 NuGet 包的元数据定义文件,本质是一个 XML 文件,用于描述包的标识、依赖、内容、作者等信息。它不参与编译,但决定打包时包含哪些文件、引用哪些依赖、显示什么描述——是 NuGet 打包(nuget pack 或 dotnet pack)的核心配置依据。
基础结构:必须有的根元素和关键字段
一个最小可用的 .nuspec 文件需满足以下要求:
-
是最外层根元素 -
包含所有包级元数据(必填) -
包唯一标识符(如MyCompany.Utilities),不能含空格或特殊字符 -
语义化版本号(如1.0.0或2.1.3-beta) -
(可选但推荐)用户在 NuGet.org 或 Visual Studio 中看到的显示名 -
(必填)简明说明包用途,会出现在包管理器界面 -
作者列表,用英文逗号分隔(如John Doe, Jane Smith)
指定程序集与资源:files 节点控制打包内容
决定哪些文件被打进 .nupkg,按目标路径组织。常用写法:
- 打包编译输出:
(注意路径分隔符用反斜杠,target指定框架目录) - 打包 PDB 调试符号:
- 打包 XML 文档:
- 打包工具类脚本(如 PowerShell):
- 排除不需要的文件:不写入
即不打包;也可用的exclude属性(较少用)
声明依赖与兼容性:dependencies 和 frameworkAssemblies
让 NuGet 知道这个包运行时需要哪些其他包或 .NET Framework 组件:
-
下用声明 NuGet 包依赖:(支持范围语法,如[13.0.3]、13.0.3、[13.0,14.0)) - 若需依赖特定框架内置程序集(如
System.Data),用: - 多目标框架?可在
内按targetFramework分组:
高级配置:标签、许可证、仓库链接等(提升发布体验)
这些字段虽非必需,但在 nuget.org 上发布时显著提升专业性和可发现性:
-
指向 GitHub/GitLab 项目主页 -
或MIT LICENSE.txt -
用空格分隔关键词(如logging json serialization),影响搜索排名 -
推荐使用 64×64 PNG 图标(路径相对.nuspec文件)
不复杂但容易忽略:确保 .nuspec 文件编码为 UTF-8(无 BOM),且所有路径使用 Windows 风格反斜杠(即使在 Linux/macOS 上构建),否则 nuget pack 可能静默失败或路径错乱。










