我正在尝试使用 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是解释包版本控制的链接
以下是我尝试过的管道
最佳答案
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文档,您可以使用
VersionPrefix
和 VersionSuffix
项目文件中的属性 .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"
:结果是:
在这种情况下,我们可以生成包版本为
1.0.0-alpha
当汇编版本为 1.0.0
.另一方面,我们可以删除参数
--version-suffix "alpha"
当它转移到生产时:现在,这应该就是你想要的。
希望这可以帮助。
关于.net - 如何使用程序集中的版本号创建预发布的 nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60504149/