如何将指定项目作为NuGet包发布到Azure DevOps Artifacts?
可行解决方案
给你两种精准控制发布范围的方案,其中第二种完全符合你“修改项目设置、流水线通用”的需求:
方案一:在流水线打包阶段指定目标项目
直接在Pack任务里明确写出要打包的两个项目路径,这样只会生成这两个项目的NuGet包,后续Push自然只推送这些包。
修改后的Pack任务代码:
- task: DotNetCoreCLI@2 displayName: '打包指定项目' inputs: command: pack # 替换成你实际要发布的两个项目路径 projects: | **/TargetProject1.csproj **/TargetProject2.csproj versioningScheme: byBuildNumber
方案二:通过项目属性控制(推荐,保持流水线通用)
这种方法不需要改动流水线,只需要在目标项目的.csproj文件中配置生成NuGet包,其他项目默认不生成,流水线可以直接复用在其他解决方案上。
- 打开要发布的两个项目的
.csproj文件,添加以下配置:
<PropertyGroup> <!-- 开启构建时自动生成NuGet包 --> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> <!-- 可选:自定义包的ID和版本,也可以留空让流水线自动生成 --> <PackageId>YourProjectId</PackageId> <Version>$(Build.BuildNumber)</Version> </PropertyGroup>
- 对于不需要发布的项目,确保
.csproj里要么没有GeneratePackageOnBuild,要么设置为false:
<PropertyGroup> <GeneratePackageOnBuild>false</GeneratePackageOnBuild> </PropertyGroup>
- 流水线的Pack任务保持通用即可,它会自动识别配置了
GeneratePackageOnBuild=true的项目:
- task: DotNetCoreCLI@2 displayName: '打包自动识别目标项目' inputs: command: pack versioningScheme: byBuildNumber arguments: '--include-symbols --include-source'
后续如果要新增发布项目,只需要修改对应项目的.csproj配置,完全不用动流水线,完美满足通用性需求。
内容的提问来源于stack exchange,提问作者BrilBroeder
相关产品推荐
相关产品推荐

