用途:面向 .NET 库作者,讲解如何用 SDK 风格 .csproj 制作 NuGet 包,无需 .nuspec,通过 dotnet pack 产出包。
主要能力:设置包元数据(PackageId、Version、Authors、Description、PackageTags、PackageLicenseExpression、PackageReadmeFile、PackageIcon、RepositoryUrl 等),可用 Directory.Build.props 共享公共元数据;源生成器/分析器打包需将 DLL 放入 analyzers/dotnet/cs/,并用 buildTransitive 传递 props/targets;多 TFM 打包(如 netstandard2.0;net8.0;net9.0)配合条件编译;符号包(IncludeSymbols、SymbolPackageFormat=snupkg)与确定性构建;包签名(dotnet nuget sign,支持 PFX 或证书指纹,需时间戳);包验证(EnablePackageValidation、PackageValidationBaselineVersion、Microsoft.DotNet.ApiCompat.Task 及 CompatibilitySuppressions.xml);SemVer 2.0 版本与预发布后缀策略。
使用方式:在 csproj 中配置属性后执行 dotnet pack;推送符号包用 dotnet nuget push "bin/Release/*.nupkg" --source https://api.nuget.org/v3/index.json --api-key "$NUGET_API_KEY";签名用 dotnet nuget sign;验证用 dotnet nuget verify。
适用场景:发布 .NET 类库、源生成器包、多框架兼容包。
限制:版本假设 .NET 8.0+ 基线;不涵盖中央包管理、SourceLink、nuget.config、NuGet Audit(属项目结构技能),CI/CD 推送流程、CLI 工具打包、Roslyn 分析器编写与发布生命周期均不在范围内。具体收费与价格暂未提供。