如何在Release Pipeline中禁止使用nuget软件包的PreRelease版本

时间:2019-09-02 11:33:25

标签: c# azure-devops nuget azure-pipelines

如果预发行版本中包含金块软件包,是否可以使发行“失败”?

Azure DevOps中可能已经为此完成了一项任务,或者也许有一种使用Powershell来完成此任务的方法?

2 个答案:

答案 0 :(得分:1)

您可以使用PowerShell读取.csproj文件,并检查是否存在预发布版本,如果存在,则出错:

[xml]$csproj = Get-Content path/to/csproj/file # e.g. $(Agent.ReleaseDirectory)/myproject/myproject.csproj
$versions = $csproj.Projects.ItemGroup.PackageReference.Version
$versions.ForEach({

   # Pre-releases are with '-' symbol, e.g. 1.0.0-beta
   if($_ -match "(?<number>\d-)")
   {
       Write-Error "Pre-release exist: $_"
   }

})

答案 1 :(得分:0)

为此的解决方案(如果要从SLN文件中提取数据包)可以是以下解决方案:

Z

用解决方案的名称更改 SolutionName 。 更改预发行包后缀的 -test (在我的情况下为Version =“ 4.1.2-test”)。

或者如果您想递归地从 csproj 文件中获取nuget

Get-Content .\SolutionName.sln |
where { $_ -match "Project.+, ""(.+)""," } |
foreach { $matches[1] } |
% { Get-Content $_ -ErrorAction SilentlyContinue |
Find "<PackageReference Include" } |
Sort-Object -Unique |
% { if($_ -match "-test") { Write-Host "You're using a PreRelease Version for the following Package $($_)"} }

再次,根据需要更改-测试