azure-devops - VSTS Build/AzureDevOps - nupkg 文件名不包含未指定文件中的版本
问题描述
我正在使用 Nuget Packager 任务步骤从我的 csproj 中获取 nupkg 文件,并且我的 .nuspec 文件包含版本号:
<version>1.1.2<version>
但是,生成的文件仅包含我的构建名称,并附有随机数。例如:MyProject.0.0.7416.19926.nupkg。
自动包版本控制选项已关闭,因为我假设将使用 .nuspec 文件中的版本。我还包含了 Nuget 打包程序的 YAML 定义。
{
"enabled": true,
"continueOnError": false,
"alwaysRun": false,
"displayName": "NuGet Packager ",
"timeoutInMinutes": 0,
"condition": "succeeded()",
"task": {
"id": "333b11bd-d341-40d9-afcf-b32d5ce6f24b",
"versionSpec": "0.*",
"definitionType": "task"
},
"inputs": {
"searchPattern": "$/...csproj",
"outputdir": "$(Build.StagingDirectory)\\packages",
"includeReferencedProjects": "false",
"versionByBuild": "false",
"versionEnvVar": "Version",
"requestedMajorVersion": "1",
"requestedMinorVersion": "0",
"requestedPatchVersion": "0",
"configurationToPack": "$(BuildConfiguration)",
"buildProperties": "",
"nuGetAdditionalArgs": "",
"nuGetPath": "$(System.DefaultWorkingDirectory)\\build\\nuget.exe"
}
}
我正在为 nugget.exe 使用新版本,这就是为什么 nuGetPath 中的路径。
解决方案
由于Nuget Packager task
已弃用,我建议您使用DotNetCoreCLI@2
. 您需要在 csproj 中标记 nuspec 文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<NuspecFile>package.nuspec</NuspecFile>
</PropertyGroup>
</Project>
这是我的 nuspec 文件:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- Required elements-->
<id>UniqeName</id>
<version>1.1.2</version>
<description>UniqueName</description>
<authors>Krzysztof Madej</authors>
<!-- Optional elements -->
<!-- ... -->
</metadata>
<files>
<file src="bin\Release\netstandard2.0\*" target="lib" />
</files>
</package>
并使用此 YAML 构建定义:
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
displayName: "dotnet pack"
inputs:
command: 'pack'
arguments: '--configuration $(buildConfiguration)'
packagesToPack: '$(System.DefaultWorkingDirectory)/stackoverflow/08-nuget-packager/SampleApp.csproj'
versioningScheme: 'off'
outputDir: '$(Build.ArtifactStagingDirectory)'
- bash: ls $(Build.ArtifactStagingDirectory)
您将使用文件中Build.ArtifactStagingDirectory
定义的版本控制进入您的 nuget 包nuspec
。
由于在标题中您提供了在 VSTS Build 和 Azure DevOps 之间进行选择的选择,因此我提出了 Azure DevOps 的解决方案。我不确定这是否与 VSTS 有任何关系。
推荐阅读
- apache-kafka - kotlin @RegisterExtension 不与salesforce kafka-junit5 一起使用
- reactjs - 安装第三方库后出现 React Native 错误
- react-native - React Native Slider - onValueChange 调用了太多次
- ruby - ruby 中区域之间的 S3 copy_object
- java - 在 NodeJS 和 Java 中计算 HMAC sha-512
- android - 如何在android avd虚拟设备中重新挂载只读系统文件夹
- python - 如何创建不需要导入的函数?(在 Python 中)
- r - “管道”形式的 R 传递函数
- icalendar - 重复规则 (RRULE RFC 5545 iCalendar)
- c - 这个函数如何在不使用任何指针的情况下工作?