我在GitHub中有一个.Net标准库,正在尝试创建一个构建和发布管道。这可以正常工作,但是我正在努力找出如何在构建中更新版本。有一些MarketPlace插件可用,但它们似乎都针对.Net Framework应用程序。在DevOps中是否有一种允许这种方式的构建-似乎是标准功能?
答案 0 :(得分:0)
答案 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变量,然后您可以在该行下进行引用。