在Azure Devops中构建管道时,在VS2017中为.net core2.1管理从beta到发布的nuget版本

问题描述 投票:2回答:2

我需要为.net核心2.1创建nuget包,作为Azure Devops中构建和发布过程的一部分我想做什么

1)在构建部分中构建项目,然后将编译后的代码添加到工件中

2)在发布定义中将有2个部署,一个用于Beta版本,其中版本将类似于1.2.3-Beat.2并推送到azure artifact nuget,另一个部署发布版本将类似于1.2.3.2并推送到azure神器nuget。

目前我只有一个构建定义将构建(nuget包在构建过程中创建)并推送到azure artifact nuget。

enter image description here

我想创建的管道

enter image description here

azure-devops nuget nuget-package
2个回答
2
投票

dotnet pack任务与--no-build选项一起使用,并在预发布阶段设置VersionSuffix值。

注意:我当前的团队使用一组Powershell脚本将内部版本号数据附加到.csproj(或netFramework的AssemblyInfo.cs)中找到的Major.Minor数据中,但这不会改变您的问题的答案。一旦你弄清楚Major.Minor.Patch [.Build]数据将是什么,你可以使用dotnet pack--no-build任务中的VersionSuffix属性来传递包裹在管道中移动时的质量。

enter image description here

鉴于.csproj文件看起来像这样:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
  <PropertyGroup>
    <PackageVersion>1.0.0.1</PackageVersion>
    <AssemblyVersion>1.0.1812.201</AssemblyVersion>
    <FileVersion>1.0.1812.201</FileVersion>
  </PropertyGroup>
  <ItemGroup>
    <Content Include="Assemblies\*">
      <Pack>true</Pack>
      <PackagePath>lib\$(TargetFramework)</PackagePath>
    </Content>
  </ItemGroup>
</Project>

同样,如果我们忽略我们使用的版本控制步骤,上面管道图像中的dotnet包任务将生成一个版本为1.0.0.1-Beta的包。

然后在稳定版本阶段,不要设置后缀值,让包从.csproj文件中获取正常版本(例如.1.0.0.1)。


上面示例.csproj文件中的元素和值可以编写为对.csproj的直接编辑,也可以使用Properties >> Package选项卡进行设置。

如果值未在属性菜单中更改或显式添加,则元素和值不会出现在.csproj中,并由dotnet build | test | pack命令假定。

enter image description here


如果您不熟悉它们如何组合在一起,那么找到这些属性和值的正确组合可能会令人生畏。我发现this article在尝试破译版本属性时很有用。

此外,你应该了解1.0.1-b2 <1.0.1,所以你的预发布版本可能是1.2.3.2-beta1,你的稳定版本将是1.2.3.2


go to nuget doc


1
投票

由于程序包版本包含在执行“nuget pack”的那一刻(通常在构建期间执行),之后更改该版本可能会有点复杂。

您可能感兴趣的是在Azure Artifacts中使用视图的概念,这将允许您在以后的状态下将包提升到发布视图,而无需重新构建包。市场上有一个很好的扩展,允许你在一个版本中执行此操作:https://marketplace.visualstudio.com/items?itemName=rvo.vsts-promotepackage-task

使用此流程,您可以根据需要在预发布视图/ Feed中包含这些包,并在您认为合适时在发布视图中使它们可用。

这方面的缺点是Nuget没有将包装识别为预发布包装,因为你不会用适当的semver包装它们。

© www.soinside.com 2019 - 2024. All rights reserved.