使用GitHub Actions生成NuGet包:是否需拆分类库项目仓库?
无需拆分仓库,直接为同一解决方案中的类库生成NuGet包
不需要将类库项目拆分到独立解决方案或GitHub仓库,你完全可以在现有包含ASP.NET Core API和类库的同一仓库中,通过GitHub Actions仅为类库项目生成并发布NuGet包。
类库项目配置要点
确保你的类库项目.csproj文件包含NuGet包所需的元数据,示例配置如下:
<PropertyGroup> <TargetFramework>net6.0</TargetFramework> <!-- 匹配你的目标框架版本 --> <PackageId>Your.Custom.Library</PackageId> <Version>1.0.0</Version> <Authors>Your Team</Authors> <Description>用于XXX场景的工具类库</Description> <GeneratePackageOnBuild>false</GeneratePackageOnBuild> <!-- 关闭自动打包,由CI流程控制 --> </PropertyGroup>
GitHub Actions工作流示例
在仓库的.github/workflows目录下创建nuget-build.yml文件,以下是仅构建、打包类库的工作流:
name: Build Class Library NuGet Package on: push: branches: [ main ] release: types: [ published ] jobs: pack-library: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup .NET SDK uses: actions/setup-dotnet@v4 with: dotnet-version: '6.0.x' - name: Restore dependencies run: dotnet restore ./src/YourLibraryProject/YourLibraryProject.csproj - name: Build library run: dotnet build ./src/YourLibraryProject/YourLibraryProject.csproj --configuration Release --no-restore - name: Generate NuGet package run: dotnet pack ./src/YourLibraryProject/YourLibraryProject.csproj --configuration Release --no-build --output ./nupkg-output # 可选:仅在发布GitHub Release时推送包到NuGet源 - name: Publish to NuGet if: github.event_name == 'release' run: dotnet nuget push ./nupkg-output/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json
关键说明
- 工作流中通过指定类库项目的具体路径,避免构建整个解决方案,确保仅处理目标类库。
- 若有多个类库需要打包,可重复
dotnet pack步骤,或用空格分隔多个项目路径一次性打包。 - 版本号可通过GitHub Release标签动态传递,比如将
Version设为${{ github.ref_name }},实现标签与包版本同步。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

