DotNetCoreCLI @ 2 pack任务会忽略版本后缀指令

时间:2019-08-13 09:55:55

标签: build azure-devops

我正在为.Net Core 2.1解决方案创建我的第一个Azure构建管道。 DotNetCoreCLI@2的所有步骤(包步骤除外)都取得了成功。

这有效,目前是我要采取的措施:

- script: |
    dotnet pack src/MyProject/MyProject.csproj --version-suffix $(VersionSuffix) --configuration $(BuildConfiguration) --no-restore --no-build --output $(Build.ArtifactStagingDirectory)
  displayName: 'dotnet pack [$(BuildConfiguration)]'

这无效,因为它忽略了--version-suffix指令:

- task: DotNetCoreCLI@2   
  inputs:
    command: 'pack'
    # packagesToPack: '**/*.csproj; **/!*Test*.csproj' - TODO pack all projects, except test projects
    packagesToPack: 'src/MyProject/MyProject.csproj'
    arguments: '--version-suffix $(VersionSuffix) --configuration $(BuildConfiguration) --no-restore --no-build --output $(Build.ArtifactStagingDirectory)'
  displayName: 'dotnet pack [$(BuildConfiguration)]'

(我已经将我的一个TODO留在那儿作为副任务)

此外,版本前缀位于csproj文件中:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>

    <PackageId>MyProject</PackageId>
    <Authors>Me</Authors>
    <Description>A description</Description>
    <VersionPrefix>0.1.0</VersionPrefix>
    <IsPackable>true</IsPackable>
  </PropertyGroup>
<Project/>

当我使用dotnet pack时,会看到期望的完整版本的NuGet软件包(即<prefix>-<suffix>);例如0.1.0-190813.02.abcdef

当我使用DotNetCoreCLI@2任务时,版本被限制为版本前缀。例如0.1.0

我错过了什么?理想情况下,我希望管道yaml文件保持一致。

2 个答案:

答案 0 :(得分:1)

  

我错过了什么?理想情况下,我希望管道yaml文件保持一致。

不,您什么都没错过。此行为是专为DotNetCoreCLI@2设计的。

在没有YAML的经典编辑器中检查该任务时,您会看到没有这样的 Arguments 选项,而不是 Pack options

enter image description here

因此,我们可以使用此选项来定义软件包版本。

此外,根据文档.NET Core CLI task,介绍了在YAML中使用参数时的参数说明:

enter image description here

-version的参数Pack不被接受,我们需要使用custom命令,这是您现在使用的方法。

因此,您现在处在正确的方向上,无需担心。

希望这会有所帮助。

答案 1 :(得分:0)

我也偶然发现了这个问题,并发现 DotNetCoreCLI 不会帮助我解决每个 @Leo 答案的版本后缀。

解决这个问题的方法是用 powershell 任务打包你的项目。一个简单的例子:

      - powershell: 'dotnet pack -o $(build.artifactstagingdirectory) --no-build --no-restore -c ${{ parameters.configuration }} ${{ parameters.projectPath }}'
    ```