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

Build DotNetCoreCLI@2打包任务忽略版本后缀指令,build,azure-devops,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 --out

我正在为.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)]'
(我在那里留下了一个待办事项作为附带任务)

此外,版本前缀位于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/>

netstandard2.0
我的项目
我
描述
0.1.0
真的
当我使用
dotnetpack
时,我看到一个完整版本的NuGet软件包(即
-
);e、 g.
0.1.0-190813.02.abcdef

当我使用
DotNetCoreCLI@2
task版本仅限于版本前缀;e、 g.
0.1.0

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

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

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

当您在没有YAML的classic editor中检查该任务时,您可以看到没有此类参数选项,而不是打包选项

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

除了,根据文档,在YAML中使用参数时,参数的描述如下:

的参数
-version
为not accept
,我们需要使用自定义命令,这是您现在使用的方法

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


希望这能有所帮助。

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

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

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

这有点微妙。诚然,我没有注意到这些细节。谢谢,我将保留我的解决方案。谢谢。
pack
为什么是单件?@JevonKendon,对不起,我不知道原因。这应该是底层方法的实现限制。也许我们需要问问这个任务的开发者。您可以尝试从这里获取原因: