![](/img/trans.png)
[英]Cannot automatically update a NuGet package to the latest version during build
[英]Use build-number as nuget-package-version
我正在用Bamboo用msbuild創建nuget包。 目前,我總是必須手動修改nuget-package-version,然后才能將代碼提交給git(它會自動生成)。
我現在想使用Bamboo的內部版本號作為nuget-package的版本。
我可以使用命令行工具更改nuget-package-version嗎?
是的,您可以使用Powershell。 我還沒有測試腳本,但是它可以完成任務。 您需要在nuspec中將版本號定義為$ version $,然后在構建時進行更新。 這樣,您還可以更新其他信息。
function Update-NuspecVersion {
[CmdletBinding()]
param(
[Parameter()]
[string]$RootFolder = $(throw "Repo folder is mandatory, please provide a value."),
[Parameter()]
[int]$BuildNumber
)
$Nuspecs = Get-ChildItem -Path $RootFolder -Recurse -Filter *.nuspec | Where-Object { $_.FullName -notlike "*\obj\*"}
Foreach ($Nuspec in $Nuspecs) {
$nuspecfile = [xml]$(Get-Content $Nuspec.FullName)
$PackageVersion = $([xml]$(Get-Content $Nuspec.FullName) | % package).metadata.version
if ($PackageVersion -eq '$version$') {
$Assembly = get-childitem $nuspec.Directory -Recurse -Filter "AssemblyInfo.Version.cs"
if ($Assembly.Count -eq 0) {
$Assembly = get-childitem $nuspec.Directory -Recurse -Filter "AssemblyInfo.cs"
}
$PackageVersion = $(Get-content $Assembly.FullName | ForEach-Object { $_ -replace '\/\/.+', ""; } | Select-String "AssemblyVersion").ToString().Split('"')[1]
}
$PackageVersionObject=[version]$PackageVersion
if ($Branch.Type -eq "develop") {
$PackageVersion ="{0}.{1}.{2}-{3}-{4}" -f $PackageVersionObject.major, $PackageVersionObject.Minor, $BuildNumber, $Branch.Type, ("{0:D4}" -f $BuildNumber)
}
else {
$PackageVersion ="{0}.{1}.{2}" -f $PackageVersionObject.major, $PackageVersionObject.Minor, $BuildNumber
}
$nuspecfile.package.metadata.version = $PackageVersion
$nuspecfile.Save($Nuspec.FullName)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.