如何在Azure Pipeline中更新Windows服务与控制台应用版本?
如何在Azure DevOps流水线中更新控制台应用与Windows服务的版本号?
你遇到的核心问题是:DotNetCoreCLI@2任务的versioningScheme和versionEnvVar参数仅对pack命令生效,build命令并不识别这两个配置,所以你之前的build任务设置不会改变应用的版本号。
要实现控制台应用和Windows服务的版本更新,有两种直接可行的方案:
方案1:在build命令中直接传递版本参数
修改build任务的arguments,通过/p:Version参数将流水线变量PackageVersion注入到构建过程中,这是最直接的方式:
- task: DotNetCoreCLI@2 displayName: Build project inputs: command: 'build' projects: '**/*.csproj' arguments: '--configuration $(buildConfiguration) -o $(Build.StagingDirectory)/ci-build /p:Version=$(PackageVersion)'
如果你的项目需要分别指定AssemblyVersion和FileVersion(默认SDK风格项目中Version会同步这两个值),可以补充对应的参数:
arguments: '--configuration $(buildConfiguration) -o $(Build.StagingDirectory)/ci-build /p:Version=$(PackageVersion) /p:AssemblyVersion=$(PackageVersion) /p:FileVersion=$(PackageVersion)'
方案2:在项目文件中配置版本变量
如果是SDK风格的.csproj文件,可以直接在项目里定义版本属性,让构建时自动读取流水线变量:
- 打开项目的
.csproj文件,添加或修改Version节点:
<PropertyGroup> <Version>$(PackageVersion)</Version> </PropertyGroup>
- 保持build任务的原有配置即可,流水线会自动将
PackageVersion变量传递给项目的构建过程。
这两种方案都能让你的控制台应用和Windows服务在构建后使用指定的PackageVersion作为版本号,替代默认的1.0.0。
内容的提问来源于stack exchange,提问作者Enrico
相关产品推荐
相关产品推荐

