使用 .csproj 生成 nuget 包会导致版本号错误

Generating nuget package using .csproj cause wrong version number

目前我正在使用 *.csproj 和 nuspec 文件创建一个 nuget 包。在 nuspec 文件中,我声明 assembly/package 版本如下:

<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    ...
  </metadata>
</package >

在程序集中,版本声明如下:

[assembly: AssemblyVersion("6.0.0")]
[assembly: AssemblyFileVersion("6.0.0")]

问题是,当我使用 nuget pack xxx.csproj 创建包时, 它创建了一个版本为 6.0.0.0 而不是 6.0.0 的包。这在使用 nuget 安装程序集时会产生问题,因为 visual studio 正在 package/.../6.0.0 中搜索程序集,但它存储在 packages/.../6.0.0.

这是一个已知问题吗?

NuGet 使用其他属性生成在 $version$ 中替换的版本:

[程序集:AssemblyInformationalVersion("6.0.0")]

how to version assemblies destined for Nuget NuGet uses this attribute because nothing else seems to care about it :) the AssemblyInformationalVersion attribute is a literal one that can be used for semantic versions

所述