C# NuSpec-如何将$version$裁剪为Major.Minor.Build(SemVersion)?
我正在使用创建一个.NuSpec文件C# NuSpec-如何将$version$裁剪为Major.Minor.Build(SemVersion)?,c#,visual-studio,nuget,squirrel.windows,C#,Visual Studio,Nuget,Squirrel.windows,我正在使用创建一个.NuSpec文件 <metadata> <version>$version$</version> <!-- ... --> </metadata> $version$ 不幸的是,这将以Major.Minor.Build.Revision格式返回程序集的版本。为了与Squirrel使用的SemVersion兼容,我需要将其缩减为3个部分(Major.Minor.Build) 有没有办法做到这一点?我宁愿不
<metadata>
<version>$version$</version>
<!-- ... -->
</metadata>
$version$
不幸的是,这将以Major.Minor.Build.Revision格式返回程序集的版本。为了与Squirrel使用的SemVersion兼容,我需要将其缩减为3个部分(Major.Minor.Build)
有没有办法做到这一点?我宁愿不必为每个版本手工输入版本号
有没有办法做到这一点?我宁愿不必为每个版本手工输入版本号
如果不想手动修改每个版本的版本号,则可能不需要.nuspec
。您可以直接使用项目文件运行nuget pack
:
nuget pack MyProject.csproj
根据,当我们直接打包.csproj
时,$version$
的值源来自文件AssemblyInfo.cs
或AssemblyInfo.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兼容
资料来源:
希望这有帮助。可能重复感谢,很有趣-但是,我没有使用新的csproj格式,所以很遗憾,LooksHanks Leo不适用于我,这种输入非常有用!我尝试过让版本自动递增(例如,将AssemblyVersion指定为“1.0.*”),最终得到了4段式版本字符串。我将尝试将此应用于AssemblyInformationalVersion!