Skip to content
Bitzsoft.Integrationsbitzsoft.integrations

Guide

打包

dotnet pack、CPM 集中包管理、聚合包占位和 README 随包发布。

Last updated

打包是发布前的核心步骤。所有包共用版本号,使用集中包管理,聚合包有特殊的占位约定。

版本号

所有包共用同一版本号(没有 per-package 版本)。版本号定义在 Directory.Build.props

<VersionPrefix>1.0.0</VersionPrefix>
<!-- 不设置 VersionSuffix 表示稳定版本 -->

版本号 bump 是手动的——改 Directory.Build.propsVersionPrefix / VersionSuffix,或发布时通过 -p:Version= 覆盖。

打包命令

Terminal window
# ① 用默认版本打包
./scripts/pack.sh
# ② 指定版本
./scripts/pack.sh 1.2.3
# ③ 直接用 dotnet CLI
dotnet pack -c Release -o artifacts/

pack.sh 先清空 artifacts/ 目录,再执行 dotnet pack,产物包含 .nupkg(主包)和 .snupkg(符号包)。

包元数据

Directory.Build.props 定义统一的包元数据:

<PropertyGroup>
<Authors>Bitzsoft</Authors>
<Company>Bitzsoft</Company>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageIcon>logo.png</PackageIcon>
<RepositoryUrl>https://github.com/shbitz/Bitzsoft.Integrations</RepositoryUrl>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
</PropertyGroup>

README 随包

每个包的 README.md 会随 NuGet 包发布(PackageReadmeFile=README.md)。NuGet.org 会展示在包页面。README 结构应包含:功能说明、安装命令、配置 JSON、DI 注册代码、使用示例、字段说明、相关包。

聚合包占位

聚合包(.All)设 IncludeBuildOutput=false + IncludeSymbols=false(纯依赖转发包),并用 build/NuGet/_._ 占位文件放进各 TFM 的 lib 目录:

<PropertyGroup>
<IncludeBuildOutput>false</IncludeBuildOutput>
<IncludeSymbols>false</IncludeSymbols>
</PropertyGroup>
<ItemGroup>
<Content Include="build\NuGet\_._" Pack="true" PackagePath="lib\net5.0\" />
<Content Include="build\NuGet\_._" Pack="true" PackagePath="lib\net8.0\" />
<Content Include="build\NuGet\_._" Pack="true" PackagePath="lib\net10.0\" />
</ItemGroup>

这避免了 NuGet “空 lib” 警告。

包验证

Directory.Build.props 启用严格的包验证:

<EnablePackageValidation>true</EnablePackageValidation>
<EnableStrictModeForCompatibleTfms>true</EnableStrictModeForCompatibleTfms>
<ApiCompatEnableRuleCannotChangeParameterName>true</ApiCompatEnableRuleCannotChangeParameterName>
<ApiCompatEnableRuleAttributesMustMatch>true</ApiCompatEnableRuleAttributesMustMatch>

打包时自动验证公共 API 兼容性,防止意外破坏性变更。

<PackageReference Include="Microsoft.SourceLink.GitHub" />
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>

SourceLink 让消费者在调试时可以步入连接器库源码(源码映射到 GitHub)。

相关

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%