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

标签 .net azure-devops continuous-integration nuget 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 的包,当它转移到生产时。我可以在网上看到许多使用预设版本号(在变量选项卡中)并附加内部版本号等的解决方案,但我正在寻找一种可以使用程序集本身而不是自定义版本的方法。 This是解释包版本控制的链接

以下是我尝试过的管道

enter image description here

最佳答案

How to create a pre-release nuget package using version number from the assembly



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

来自 project.json to csproj migration文档,您可以使用 VersionPrefixVersionSuffix项目文件中的属性 .csproj :
<PropertyGroup>
  <VersionPrefix>1.0.0</VersionPrefix>
  <VersionSuffix>alpha</VersionSuffix>
</PropertyGroup>

根据你的要求:

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 的值。是 null ,所以,它是:
<PropertyGroup>
  <VersionPrefix>1.0.0</VersionPrefix>
  <VersionSuffix></VersionSuffix>
</PropertyGroup>

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

enter image description here

结果是:

enter image description here

在这种情况下,我们可以生成包版本为 1.0.0-alpha当汇编版本为 1.0.0 .

另一方面,我们可以删除参数 --version-suffix "alpha"当它转移到生产时:

enter image description here

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

希望这可以帮助。

关于.net - 如何使用程序集中的版本号创建预发布的 nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60504149/

相关文章:

c# - 我怎么知道项目在枚举中?

testing - 大型项目的持续集成最佳实践

google-app-engine - 在 Google App Engine 上持续集成/部署/交付,风险太大?

azure - 使用 AzureDevOps 更新 Azure 上托管的 Sitecore 应用程序

Azure Devops Rest API - 获取当前在代理池中排队的构建

github - 如何从 GitHub 评论为我的拉取请求触发 Travis 重建?

.net - 当 url 在浏览器中工作时添加服务引用给我错误

C# SQlite - 使用 Query 计算字符串重复的次数(并发症)

.net - 使用REGEX查找除字符的第一个出现以外的所有字符

azure - 我可以通过 CLI 验证 azure-pipelines.yml 文件吗?