0

我正在创建一个 .NuSpec 文件

<metadata>
  <version>$version$</version>
  <!-- ... -->
</metadata>

不幸的是,这会以 Major.Minor.Build.Revision 格式返回程序集的版本。为了与 Squirrel 使用的 SemVersion 兼容,我只需将其缩减为 3 个部分(Major.Minor.Build)。

有没有办法做到这一点?我宁愿不必为每个版本手动输入版本号。

4

1 回答 1

1

有没有办法做到这一点?我宁愿不必为每个版本手动输入版本号

如果您不想为每个版本手动修改版本号,您可能不需要.nuspec. 您可以nuget pack直接使用项目文件运行:

nuget pack MyProject.csproj

根据Replacement tokens,当我们.csproj直接打包时, 的值来源$version$来自 fileAssemblyInfo.csAssemblyInfo.vb

在此处输入图像描述

所以nuget将使用AssemblyInformationalVersion如果存在的值,否则使用AssemblyVersion。默认情况下将其删除,因为它们不适用于语义版本控制。当我们将它添加到AssemblyInfo.cs文件中时:

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("2.0.0")]

Nuget 将实际应用该字符串中的任何内容作为包版本。 请注意,信息版本仅包含三个数字。因此它与 Squirrel 使用的 SemVersion 兼容。

在此处输入图像描述

来源:如何对用于 Nuget 的程序集进行版本控制

希望这可以帮助。

于 2018-03-08T06:49:32.273 回答