NuSpec - 如何将$ version $修剪为Major.Minor.Build(SemVersion)?

时间:2018-03-07 11:49:27

标签: c# visual-studio nuget squirrel.windows

我正在使用

创建.NuSpec文件
<metadata>
  <version>$version$</version>
  <!-- ... -->
</metadata>

不幸的是,它以Major.Minor.Build.Revision格式返回程序集的版本。我需要将其减少到3个部分(Major.Minor.Build)以与Squirrel使用的SemVersion兼容。

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

1 个答案:

答案 0 :(得分:1)

  

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

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

nuget pack MyProject.csproj

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

enter image description here

因此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兼容。

enter image description here

来源:How to Version Assemblies Destined for Nuget

希望这有帮助。