DotNetCoreCLI@2 打包任务忽略版本后缀指令

Jev*_*don 4 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)]'
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它忽略了--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)]'
Run Code Online (Sandbox Code Playgroud)

(我已经把我的一个待办事项留在那里作为支线任务)

此外,版本前缀位于 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/>
Run Code Online (Sandbox Code Playgroud)

当我使用时,dotnet pack我看到一个带有完整版本(即<prefix>-<suffix>)的 NuGet 包,正如我所期望的;例如0.1.0-190813.02.abcdef

当我使用DotNetCoreCLI@2任务时,版本仅限于版本前缀;例如0.1.0

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

Sho*_*ter 6

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

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

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


Leo*_*SFT 5

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

不,你没有错过任何东西。此行为是专为DotNetCoreCLI@2.

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

在此处输入图片说明

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

此外,根据.NET Core CLI task文档,在 YAML 中使用时的参数描述:

在此处输入图片说明

该参数-versionPack不接受,我们需要使用自定义的命令,这是你现在正在使用的方法。

所以,你现在走在正确的道路上,不必担心。

希望这可以帮助。

  • 为什么“pack”是个奇怪的东西? (2认同)