![](/img/trans.png)
[英]Azure DevOps NuGet Pack is ignoring csproj package details
[英]Fetch version number in Nuget package step in Azure DevOps from csproj
嘗試建立一個構建管道,其中從拉取請求構建的 nuget 后綴為“-unstable”。 但是,我似乎無法獲得在其 csproj 文件中定義的正在構建的類庫項目的版本。 我已經嘗試了我能想到的每一個關鍵字,但到目前為止,我一直未能找到具有相同問題的文檔或其他關鍵字。
任何幫助,將不勝感激。
以下是相關文件的摘錄:
類庫.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
<Version>1.1.0.0</Version>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
</Project>
ci-file.yaml
variables:
- group: BuildParameters
- name: BuildVersion
${{ if eq(variables['Build.SourceBranchName'], 'master') }}:
value: '$(Version)'
${{ else }}:
value: '$(Version).$(Build.BuildId)-unstable'
steps:
- template: template.yaml
模板.yaml
- task: NuGetCommand@2
displayName: 'NuGet Pack $(...)'
inputs:
command: pack
packagesToPack: '$(...)'
versioningScheme: byEnvVar
versionEnvVar: BuildVersion
根據您的描述,您需要在 csproj 文件中獲取版本值。
csproj文件中的版本號不能直接使用變量讀取。
為了滿足您的要求,您需要添加一個任務來讀取 csproj 文件中的版本值並將版本設置為管道變量。 然后您可以使用 Nuget 任務中的版本號。
這是一個示例:PowerShell 腳本
steps:
- powershell: |
$xml = [Xml] (Get-Content .\xxx.csproj)
$version =$xml.Project.PropertyGroup.Version
echo "$version"
echo "$(Build.SourceBranchName)"
if( "$(Build.SourceBranchName)" -eq "master") {
echo "##vso[task.setvariable variable=version]$version "
}else {
$Newversion = "$version.$(Build.BuildId)-unstable"
echo "##vso[task.setvariable variable=version]$Newversion"
}
displayName: 'PowerShell Script'
然后您可以在接下來的任務中使用變量$(version)
。
有關更多信息,您可以參考有關在 Pipeline 中設置變量的文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.