在VS2010中构建时,Nuget如何跟踪软件包版本?

时间:2012-06-06 11:23:15

标签: version-control nuget nuget-package

我已经注意到几次Nuget pack会重置软件包版本,从头开始有效,并使软件包的版本低于前一版本。

我在VS2010和AssemblyInfo.cs中使用星号*功能来生成版本:

// You can specify all the values or you can default the Revision and Build Numbers 
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.*")]
//[assembly: AssemblyFileVersion("1.0.*")]

现在,我可能有一个编号为1.0.0.32334的版本,然后突然随机构建将变为例如1.0.0.16272,并且从它构建的包也会发生同样的情况。

这完全是随机发生的(当确切地或在什么条件下都没有想到它)但是它非常烦人,因为它杀死了Nuget的更新机制 - 因为它找不到新的版本。

还有其他人发现过这个吗?

1 个答案:

答案 0 :(得分:1)

简短回答:Nuget默认只使用程序集版本,但您可以在nuspec或命令行中覆盖..

根据MSDN,版本号的格式为:

  

major.minor.build.revision

And auto-incremented build numbers behave like this

  

默认内部版本号每天递增。默认修订号是随机的。

当您使用自动构建编号时,您应该允许VS自动增加两者构建和修订号,就像注释掉的示例所示。尽管文档声称版本号的随机性,但在我的观察中,它并不是随机的。事实上,它似乎全天都在增加,很可能会在第二天重置。但是,我不愿意这样做,因为它可能会改变实施细节。

通过不让VS选择内部版本号,你实际上是将它减少为一个随机数,所以有时候修改号码小于之前的版本号并不令人惊讶。除非在nuspec或命令行中重写,否则NuGet只需获取程序集版本并对程序包使用相同的版本。因此,您的根本原因可能就是选择汇编版本号。

如果可以,只需将版本控制方案更改为:

[assembly: AssemblyVersion("1.0.*")]

但是如果这是不可接受的,那么你必须在Nuspec中维护版本号,或者在调用Nuget pack时在命令行上提供它们。