Msbuild 在VSTS内部版本和.net标准下未更新包版本

Msbuild 在VSTS内部版本和.net标准下未更新包版本,msbuild,azure-pipelines,.net-standard,gitversion,Msbuild,Azure Pipelines,.net Standard,Gitversion,我正在使用VSTS构建和GitVersion构建一个.net标准组件。由于其.net标准,我不得不使用“msbuild/t:pack”而不是nuget pack步骤 这导致软件包版本号始终为1.0.0,我认为这意味着没有设置“PackageVersion”。GitVersion文档说“当UpdateVersionProperties为true时设置以下MSBuild属性”,但似乎没有相应的选项 有人知道如何让它工作吗 编辑 项目文件: 我更改了工作生成定义中的两项内容,禁用了Nuget Pac

我正在使用VSTS构建和GitVersion构建一个.net标准组件。由于其.net标准,我不得不使用“msbuild/t:pack”而不是nuget pack步骤

这导致软件包版本号始终为1.0.0,我认为这意味着没有设置“PackageVersion”。GitVersion文档说“当UpdateVersionProperties为true时设置以下MSBuild属性”,但似乎没有相应的选项

有人知道如何让它工作吗

编辑

项目文件:

我更改了工作生成定义中的两项内容,禁用了Nuget Pack步骤,并在Visual Studio生成步骤中添加了“/t:Pack”作为msbuild参数

Nuspec文件

您应该让任务优先于MSBuild任务。它将生成带有1.1.0的nuget包版本。但它不会在源代码中更新新版本(1.1.0),因此当您再次构建时,您将始终获得nuget软件包版本1.1.0

还有另一种生成nuget包并根据需要指定包版本的方法。详细构建定义如下:

  • .NET核心任务与命令还原:指定.csproj的路径
  • 带命令的.NET核心任务
    build
    :指定.csproj的路径
  • .NET核心任务和命令
    pack
    :根据需要指定.csproj的路径和包版本(
    /p:PackageVersion

    要为nuget软件包使用Gitversion变量,只需在.NET核心包任务中添加参数
    /p:PackageVersion=$(Gitversion.Major)。$(Gitversion.Minor)。$(Gitversion.Patch)

    变量
    $(GitVersion.Major)
    $(GitVersion.Minor)
    $(GitVersion.Patch)
    在执行GitVersion任务后自动生成


PackageVersion
默认为GitVersion设置的
版本。请分享您的设置(csproj文件)的更多详细信息,我想我会用GitVersion创建的环境变量替换版本号?环境变量可以在
/p:PackageVersion
中使用,但是您应该注意到格式应该是
major.minor.patch
。那么您能否在您的示例中阐明我如何使用GitVersion生成包版本?谢谢,我在回答的最后添加了使用GitVersion for package的设置,您可以试一试。您可以改为使用NuGet push任务。