我需要nuget pack
生成一个只有 3 位数字的包版本(我们想对其进行语义版本控制)但是当我在属性设置为“1.0.0”的 csproj 上调用它时AssemblyVersion
,生成的 nupkg 文件以版本“1.0”结尾.0.0" 在它的元数据(和文件名)中。为什么命令行工具不支持AssemblyVersion
属性上指定的位数?
我首先调用了nuget spec
对 csproj 文件的调用,该文件会生成一个像这样的存根 nuspec 文件(它实际上包含更多带有占位符值的标签,但我已经删除了它们,因为我们不需要它们):
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Release notes.</releaseNotes>
<copyright>Copyright 2015</copyright>
</metadata>
</package>
将此 nuspec 文件签入 TFS 与 csproj 文件位于同一文件夹中后,我们现在可以像这样调用 pack:
nuget pack MyProject.csproj
项目的 AssemblyInfo.cs 文件包含明确设置版本的行:
[assembly: AssemblyVersion("1.0.0")]
一切都很好,除了该工具在检索程序集版本时使用 4 位数字。当我右键单击文件资源管理器上的 dll 并转到详细信息时,即使 Windows 也仅显示 3 位数的版本。为什么 NuGet 使用 4 位数字?我可能遗漏了一些明显的东西吗?
在 nuspec 中对版本进行硬编码显然并不理想,因为这样我们就必须在两个不同的地方维护版本号,而它们应该总是相同的。我的意思是,这应该是$version$
NuGet 本身知道如何从项目中提取的特殊占位符值背后的想法。