我有一个包含多个类库项目的.NET解决方案,每个解决方案都使用azure-devops作为nuget feed发布。
然后,我有一个azure-devops构建管道,其中包括还原,构建,发布,打包和推送的步骤。 前4个步骤是针对** / .csproj设置的,最后一个是带有目标Feed的$(Build.ArtifactStagingDirectory)/ .nupkg。
我已完成所有工作并可以正常工作,除非您仅更改一个项目,否则由于** / *。csproj,它会构建所有项目。
这对nuget软件包不利,因为它会增加每个项目的版本号,并且它们都显示为在nuget软件包管理器中具有可用更新。
我的问题:有没有办法做到这一点,只有经过变更的项目才能通过该过程?
答案 0 :(得分:1)
是否有办法做到这一点,只有经过变更的项目才能通过?
答案是肯定的。
解决方案是使用私有代理而不是托管代理来构建您的解决方案。
因为每次分配给我们的托管代理都是一台干净的机器,VS / MSbuild都会为设置**/* csproj
构建所有项目。因此,要解决此问题,我们必须保存上次构建的结果以实现增量构建。
因此,要解决此问题,我们需要设置一个私有代理来构建那些项目,并且在运行构建之前不要清除私有代理的工作目录:
在“获取源”上将“清除”选项设置为false:
注意:由于您还为任务nuget push设置了**/*.csproj
,因此,如果未修改项目,则此命令会将相同版本的feed推送到feed,它将引发冲突错误,因此需要启用允许重复项在nuget push任务中被跳过:
希望这会有所帮助。