Ale*_*iak 42 .net msbuild tfs visual-studio .net-core
TLDR:在为dotnet pack程序集创建nuget包时,在哪里提取版本信息?
我有一个库,我已经从.NET 4.6.1项目转换为.NET Core项目project.json.对于我在此期间的CI(使用TFS 2015 vnext),我会得到我的版本号,并用新版本替换project.json文件中的版本号.该dotnet pack命令可以很好地选择版本,并创建一个包含更新版本号的新包.
上周,我从2015年TFS升级到2017年TFS.原来,project.json被更新的.csproj文件取代.我已经更新了我的CI.在我的CI期间 - 我更新了我的/Properties/AssemblyInfo.cs文件,将AssemblyVersion标签替换为当前版本的版本.然后我构建了解决方案 - 构建得很好.然后我打包解决方案.
不过,尽管AssemblyVersion和AssemblyFileVersion在被设置AssemblyInfo.cs为正确的版本号- dotnet pack仍在生产.nupkg那些文件*.1.0.0.nupkg.
我错过了什么?
这是我的包命令:
dotnet pack $projectFile -o $currentDirectory
Run Code Online (Sandbox Code Playgroud)
Edw*_*ard 63
更好的是,/p:Version=$(Build.BuildNumber)在dotnet pack命令中指定(TFS/VSTS),它将使用nuget包中的指定版本构建它.示例(非TFS特定):
dotnet pack .\src\example\example.csproj -o c:\published\example -c Release /p:Version=1.2.3
Run Code Online (Sandbox Code Playgroud)
示例(特定于TFS)< - 我们使用PowerShell脚本步骤将其用于我们的TFS 2017打包.
dotnet pack $(Build.SourcesDirectory)\src\example\example.csproj -o $(Build.ArtifactStagingDirectory)\Pack -c Release /p:Version=$(Build.BuildNumber)
Run Code Online (Sandbox Code Playgroud)
注意:它不会更新包参考版本.
Nat*_*ini 27
当您使用时dotnet pack,版本将从项目定义(以前project.json,现在*.csproj)中提取,而不是AssemblyInfo.cs.因此,您的新工作流程将非常类似于它的工作流程project.json.
从project.json到csproj迁移文档,您可以使用VersionPrefix和VersionSuffix属性.
之前:
{
"version": "1.0.0-alpha-*"
}
Run Code Online (Sandbox Code Playgroud)
现在:
<PropertyGroup>
<VersionPrefix>1.0.0</VersionPrefix>
<VersionSuffix>alpha</VersionSuffix>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
您也可以使用单一Version属性,但文档警告此"可能会在打包期间覆盖版本设置".
<PropertyGroup>
<Version>1.0.0-alpha</Version>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
Sud*_*hra 17
注意:我知道这个问题不是专门针对 VSTS/Azure Dev Ops,而是在此处搜索如何在构建管道上执行此操作,因此添加对我有用的内容
-p:Version=1.0.$(Build.BuildId) -o $(Build.ArtifactStagingDirectory)如果打包后的任务将推送到提要,则需要 -o 参数(这不是人们构建包的原因吗?)
| 归档时间: |
|
| 查看次数: |
16521 次 |
| 最近记录: |