1

我正在使用 Visual Studio 2017 中引入的新 CSPROJ 架构。此外,我使用它为我的程序集创建一个 NuPkg。

<PropertyGroup>
  <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  <PackageId>MyComponent</PackageId>
  <Version>2.1.0</Version>
 .
 .
 .
</PropertyGroup>

我正在使用 VSTS 来构建我的解决方案,并且我想通过向标签添加预发布名称来使用构建来控制包质量。像这样的东西:

  <Version>2.1.0$(VERSIONSUFFIX)</Version>

生成包名称,例如:

  • MyComponent.2.1.0-alpha-12345.nupkg
  • MyComponent.2.1.0-beta-67890.nupkg
  • MyComponent.2.1.0.nupkg

这工作正常,但我发现一个讨厌的副作用 - 如果我在 Visual Studio 中以交互方式编辑版本号,它会删除$(VERSIONSUFFIX)占位符。我可以更新版本号的唯一方法是直接编辑 CSPROJ。

有没有更好的方法让构建控制 NuPkg 生成?

谢谢

-约翰

4

2 回答 2

1

编辑器将始终更改Version并删除所有自定义项。

新 SDK 的建议方法是VersionPrefix在构建中设置,并且VersionSuffix- 如果设置 - 将附加到它。

所以你会有

<VersionPrefix>1.2.3</VersionPrefix>

并且可以构建使用-p:VersionSuffix=beta-123来生成1.2.3-beta-123.nupkg文件。但是以任何方式在 VS 属性中进行编辑变得不可能。

于 2018-06-26T15:10:11.657 回答
0

您可以根据需要使用构建变量在 NuGet 打包任务中指定包版本和前缀版本。

如果您想对包版本使用汇编版本并根据需要更改前缀版本,您可以使用以下步骤:

1.获取汇编版本

您可以添加任务Assembly Info Reader,然后您可以通过变量获取程序集版本$(ASSEMBLYINFO.ASSEMBLYVERSION)

2.根据需要定义包版本和前缀版本

您可以在构建定义中定义一个变量来仅指定前缀版本。比如ver带前缀部分的变量beta-1.1

在此处输入图像描述

添加要组合的 PowerShell 任务$(ASSEMBLYINFO.ASSEMBLYVERSION)和前缀版本一起打包 nuget 包。PowerShell 脚本可以是:

Write-Host "##vso[task.setvariable variable=ver]$(ASSEMBLYINFO.ASSEMBLYVERSION)-$(ver)"

所以变量$(ver)包含带有前缀版本的版本。

3.为要打包的包指定带有前缀的定义版本

在 NuGet 包任务中,为自动包版本控制选项选择使用环境变量并指定ver为环境变量。

在此处输入图像描述

然后打包的包将作为格式MyComponent.2.1.0-beta-1.1.nupkg等。

于 2018-06-27T06:36:09.190 回答