TLDR:当dotnet pack为程序集创建Nuget包时,它在哪里拉取版本信息?

我有一个图书馆,是我从一个.NET 4.6.1将一个项目.NET核心项目,共project.json个.对于我在此期间的CI(使用TFS 2015 vnext),我将获取我的版本号并替换项目中的版本号.新版本的json文件.dotnet pack命令将很好地获取版本,并使用更新的版本号创建一个新包.

上周,我从TFS 2015升级到TFS 2017.结果,project.json被替换为更新的.csproj文件.我更新了我的个人资料.在CI期间,我更新了我的/Properties/AssemblyInfo.cs文件,用当前构建的版本替换了AssemblyVersion标记.然后我构建解决方案-它构建得很好.然后我把解决方案打包.

然而,尽管AssemblyInfo.cs中的AssemblyVersionAssemblyFileVersion被设置为正确的版本号,dotnet pack仍在生产.nupkg文件是*.1.0.0.nupkg.

我错过了什么?

这是我的背包命令:

dotnet pack $projectFile -o $currentDirectory

推荐答案

当您使用dotnet pack时,版本将从项目定义中提取(以前是project.json,现在是*.csproj),而不是AssemblyInfo.cs.因此,您的新工作流程将与project.json的工作流程非常相似.

project.json to csproj migration docs开始,可以使用VersionPrefixVersionSuffix属性.

之前:

{
  "version": "1.0.0-alpha-*"
}

现在:

<PropertyGroup>
  <VersionPrefix>1.0.0</VersionPrefix>
  <VersionSuffix>alpha</VersionSuffix>
</PropertyGroup>

您也可以使用Single Version属性,但是文档警告说这"可能会在打包过程中覆盖版本设置".

<PropertyGroup>
  <Version>1.0.0-alpha</Version>
</PropertyGroup>

.net相关问答推荐

节省用户在整个应用程序中使用的Flutter

PowerShell - 如果用户输入凭据,则查询 AD 时出错

.Net MAUI Android 无法与 API localhost 对话

什么是提升运算符?

C# - 获取不包括隐藏文件的文件列表

如何获得友好的操作系统版本名称?

.NET 4.0 中有内置的二叉搜索树吗?

LINQ 性能常见问题解答

是否可以更改 Winforms 组合框以禁用输入?

是否有 TLS 1.2 的 .NET 实现?

什么版本的 .NET 附带什么版本的 Windows?

C# 的浮点比较函数

C#中的引用类型

在同一解决方案中引用 2 个不同版本的 log4net

获取 .NET 程序集的 AssemblyInformationalVersion 值?

覆盖 ASP.NET MVC 中的授权属性

为什么要使用 C# 类 System.Random 而不是 System.Security.Cryptography.RandomNumberGenerator?

使用没有catch块的try-finally块

在 C#/.NET 中合并两个图像

如何将两个 List 相互比较?