VSTS Build/AzureDevOps - nupkg 文件名不包含未指定文件中的版本
VSTS Build/AzureDevOps - nupkg file name does not contain the version in unspecified file
我正在使用 Nuget Packager 任务步骤从我的 csproj 中获取 nupkg 文件,我的 .nuspec 文件包含版本号:
<version>1.1.2<version>
但是,生成的文件只包含我的构建名称,并附有随机数。
例如:MyProject.0.0.7416.19926.nupkg.
Automatic Package versioning 选项已关闭,因为我假设版本将从 .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 文件进行 decalre
<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)/Whosebug/08-nuget-packager/SampleApp.csproj'
versioningScheme: 'off'
outputDir: '$(Build.ArtifactStagingDirectory)'
- bash: ls $(Build.ArtifactStagingDirectory)
您将进入 Build.ArtifactStagingDirectory
您的 nuget 包,其版本控制在 nuspec
文件中定义。
由于在标题中您可以在 VSTS 构建和 Azure DevOps 之间进行选择,因此我介绍了 Azure DevOps 的解决方案。我不确定这是否与 VSTS 有任何关系。
我正在使用 Nuget Packager 任务步骤从我的 csproj 中获取 nupkg 文件,我的 .nuspec 文件包含版本号:
<version>1.1.2<version>
但是,生成的文件只包含我的构建名称,并附有随机数。 例如:MyProject.0.0.7416.19926.nupkg.
Automatic Package versioning 选项已关闭,因为我假设版本将从 .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
<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)/Whosebug/08-nuget-packager/SampleApp.csproj'
versioningScheme: 'off'
outputDir: '$(Build.ArtifactStagingDirectory)'
- bash: ls $(Build.ArtifactStagingDirectory)
您将进入 Build.ArtifactStagingDirectory
您的 nuget 包,其版本控制在 nuspec
文件中定义。
由于在标题中您可以在 VSTS 构建和 Azure DevOps 之间进行选择,因此我介绍了 Azure DevOps 的解决方案。我不确定这是否与 VSTS 有任何关系。