如何使用程序集中的版本号创建预发布的 nuget 包

Kar*_*hik 5 .net continuous-integration nuget devops azure-devops

我正在尝试使用 azure devops 创建 Nuget 包。我想在创建稳定版本之前创建包的预发行版本。当前正在尝试打包 .netstandard 2.0 应用程序。

我尝试过的 -

尝试在 csproj - 中设置版本<Version>1.0.6-alpha</Version>。这确实有效,但我不确定当我想将其升级为稳定版本时如何删除该 alpha 标签

我希望包从程序集中获取版本(不使用自动版本控制),例如,如果程序集版本是 1.0.0,我需要一个 1.0.0-alpha 的包,然后在转移到生产环境时需要 1.0.0。我可以在网上看到许多使用预设版本号(在变量选项卡中)和附加版本号等的解决方案,但我正在寻找一种可以使用程序集本身的版本而不是自定义定义的方法。是解释包版本控制的链接

下面是我尝试过的管道

在此输入图像描述

Leo*_*SFT 4

如何使用程序集中的版本号创建预发布的 nuget 包

由于您正在尝试打包.netstandard 2.0应用程序,我们可以使用dotnet pack,版本是从项目定义(以前的project.json,现在的*.csproj)中提取的,而不是程序集AssemblyInfo.cs

project.json到csproj迁移文档,您可以使用项目文件中的VersionPrefix和属性:VersionSuffix.csproj

<PropertyGroup>
  <VersionPrefix>1.0.0</VersionPrefix>
  <VersionSuffix>alpha</VersionSuffix>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

根据你的要求:

if the assembly version is 1.0.0 i need a package that is 1.0.0-alpha and later 1.0.0 when its moved to production

VersionSuffix为了解决这个问题,我设置了is的值null,因此,它是:

<PropertyGroup>
  <VersionPrefix>1.0.0</VersionPrefix>
  <VersionSuffix></VersionSuffix>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

然后我们使用DotNetCoreCLI 自定义的 donet任务而不是nuget pack带有参数的任务--version-suffix "alpha"

在此输入图像描述

结果是:

在此输入图像描述

1.0.0-alpha在这种情况下,当程序集版本为 时,我们可以生成包版本为1.0.0

另一方面,我们可以--version-suffix "alpha"在将其转移到生产环境时删除该参数:

在此输入图像描述

现在,这应该就是您想要的。

希望这可以帮助。