VSTS - 使用 AssemblyInfo 和附加内部版本号的 NuGet 版本

Rob*_*sey 5 nuget azure-devops

我正在尝试在 VSTS 上为我的 NuGet 包设置 CI 部署,以便在进行新提交时,将打包一个包并将其发送到我的源。不幸的是我不知道从哪里开始;我在版本控制方面的大部分经验都是手动更新解决方案中的文件,因此出现了这个问题,所以如果有更好的方法来做到这一点,请告诉我。

我希望名称是 AssemblyInfo.cs 文件中的版本号(“0.0.1”),并附加自动构建的内部版本号。所以最终结果看起来像“0.0.1.35”。我也想避免在命名中使用日期/时间;很多建议都是使用这个,但我真的希望保持版本号干净,以便我可以发布软件包。

我正在使用“NuGet pack”任务,因此只有“使用日期时间”、“使用环境变量”或“使用内部版本号”选项。

  1. 日期/时间意味着我必须手动输入主要、次要和补丁,我希望自动输入。

  2. 环境变量,听起来可能是这样,但我想我错过了应该在这个字段中放置的内容。

  3. 我将构建名称设置为“$(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)”,但没有得到我希望的结果。

任何帮助将不胜感激!

小智 3

您是否希望文件版本与 NuGet 包版本匹配?如果是这样,您可以使用以下解决方案。

默认情况下,NuGet pack 命令将使用文件版本作为包版本。要使用此功能获得所需的预期输出,您需要在构建期间更新文件版本。这可以通过VSTS 市场中的更新程序集信息任务轻松完成。还有许多其他类似的任务,但此任务允许您仅修改文件版本的修订部分,而与主要版本、次要版本和构建版本无关。

  1. 将更新程序集信息任务添加到您的 VSTS 帐户
  2. 修改您的构建定义并将“更新程序集信息”任务添加到构建中。确保它位于 Visual Studio 构建或 MSBuild 任务之前,因为您需要在构建发生之前更改程序集信息
  3. 在更新程序集任务中设置值以匹配程序集所需的值。默认情况下,它将 Revision 设置为 $(Build.BuildId),这是您根据您的要求想要的
  4. 在 Nuget Pack 任务中关闭“自动包版本控制” 将“更新程序集信息”任务添加到构建过程中,并确保它位于 Visual Studio 或 MSBuild 任务之前。

您的构建现在应该创建一个 0.0.1.{Build.BuildId} 的 Nugetpackage

注意:这是使用 NuGet 任务的版本 2.* 和更新程序集信息任务的版本 2.* 进行测试的。