我正在使用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>
产生包名称,例如:
这行得通,但是我发现了一个讨厌的副作用-如果我在Visual Studio中以交互方式编辑版本号,它将剥离$(VERSIONSUFFIX)
占位符。更新版本号的唯一方法是直接编辑CSPROJ。
是否有更好的方法来允许版本控制NuPkg的生成?
谢谢
-约翰
答案 0 :(得分:0)
编辑者将始终更改Version
并删除所有自定义项。
新SDK的建议方法是在内部版本中设置VersionPrefix
,并将VersionSuffix
(如果已设置)附加到其后。
所以你会
<VersionPrefix>1.2.3</VersionPrefix>
,并且可以使用-p:VersionSuffix=beta-123
进行构建以生成1.2.3-beta-123.nupkg
文件。
但是以任何方式都无法在VS属性中进行编辑。
答案 1 :(得分:0)
您可以根据需要使用构建变量在NuGet pack任务中指定软件包版本和前缀版本。
如果要使用程序集版本作为软件包版本,并根据需要更改前缀版本,则可以使用以下步骤:
您可以添加任务Assembly Info Reader,然后可以通过变量$(ASSEMBLYINFO.ASSEMBLYVERSION)
获取程序集版本。
您可以在构建定义中定义变量以仅指定前缀版本。例如带有前缀部分ver
的变量beta-1.1
。
添加一个PowerShell任务以将$(ASSEMBLYINFO.ASSEMBLYVERSION)
和前缀版本组合在一起以打包nuget程序包。 PowerShell脚本可以是:
Write-Host "##vso[task.setvariable variable=ver]$(ASSEMBLYINFO.ASSEMBLYVERSION)-$(ver)"
因此变量$(ver)
包含带有前缀版本的版本。
在NuGet打包任务中,选择“使用环境变量进行自动软件包版本控制”选项,然后将ver
指定为环境变量。
然后打包的软件包将以MyComponent.2.1.0-beta-1.1.nupkg
等格式显示。