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 文件保持一致。
我还偶然发现了这个问题,并发现 DotNetCoreCLI 不会帮助我处理每个 @Leo 答案的版本后缀。
解决这个问题的方法是将你的项目与powershell任务打包在一起。一个简单的例子:
- powershell: 'dotnet pack -o $(build.artifactstagingdirectory) --no-build --no-restore -c ${{ parameters.configuration }} ${{ parameters.projectPath }}'
```
Run Code Online (Sandbox Code Playgroud)
我错过了什么?理想情况下,我希望管道 yaml 文件保持一致。
不,你没有错过任何东西。此行为是专为DotNetCoreCLI@2.
当您在没有 YAML 的经典编辑器中检查该任务时,您可以看到没有这样的Arguments选项,而不是Pack options:
因此,我们可以使用此选项来定义包版本。
此外,根据.NET Core CLI task文档,在 YAML 中使用时的参数描述:
该参数-version的Pack不接受,我们需要使用自定义的命令,这是你现在正在使用的方法。
所以,你现在走在正确的道路上,不必担心。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
1657 次 |
| 最近记录: |