如何为.Net标准库更新Azure DevOps中的版本

时间:2019-03-07 07:38:36

标签: azure-devops

我在GitHub中有一个.Net标准库,正在尝试创建一个构建和发布管道。这可以正常工作,但是我正在努力找出如何在构建中更新版本。有一些MarketPlace插件可用,但它们似乎都针对.Net Framework应用程序。在DevOps中是否有一种允许这种方式的构建-似乎是标准功能?

3 个答案:

答案 0 :(得分:0)

这当然取决于您执行构建的方式,您可以执行以下操作:

使用.net核心任务/ dotnet构建(这也适用于标准库),您可以将版本添加为参数: enter image description here 在此示例中,我使用内部版本号,但这可能是您喜欢的任何内容。

答案 1 :(得分:0)

正如Remco所说,使用“ dotnet build / p:version = {yourVersionNumber} ...”,它将使用给定的版本号标记您的构建,以便您可以在dll文件的version属性中看到它。

后跟“ dotnet publish --no-build ...”,因此它将无需重新构建即可发布您的dll,默认版本为“ 1.0.0.0”。您发布的内容将保留您在dotnet版本中指定的版本号。

以上两个步骤都可以使用PowerShell完成。

希望有帮助。

链接到dotnet构建和发布:

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-build?tabs=netcore2x https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish?tabs=netcore21

答案 2 :(得分:0)

这里的其他答案对我不起作用,因为我们现在不得不使用YAML来配置所有内容,但是我在管道定义中拼凑了一个替代解决方案:

variables:
  projectVersion: '0.0'
  buildNumber: '$(Build.BuildId)'
  versionNumber: '$(projectVersion).$(buildNumber)'

steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $input_path = (Get-ChildItem -Path "YourDirectory\" -Include SampleLibrary.csproj -File -Recurse -ErrorAction SilentlyContinue)
      $regex = '(?<=<Version>).*?(?=<\/Version>)'
      $version = Select-String -Path $input_path -Pattern $regex -AllMatches | % { $_.Matches } | % { $_.Value }
      Write-Output "##vso[task.setvariable variable=projectVersion]$version"

这会将版本号设置为“ 1.1.8.547”之类的值。您可以按自己认为合适的方式对这些片段进行按摩,或者将其保留为具有自动递增的内部版本号的三部分值,或者可以完全忽略内部版本号,而仅依赖于项目本身中定义的版本号。

PowerShell脚本的要点在于,它将首先在指定目录中检索.csproj文件。然后,它使用正则表达式匹配将值从文件中拉出并将其存储在$ version变量中。最后一行将$ version的值写入YAML中定义的projectVersion变量,然后您可以在该行下进行引用。