2012-06-06 52 views
1

我已经注意到了几次,Nuget包会重置包版本,从头开始有效地开始,并且给包装提供比以前版本更低的版本。在VS2010中构建时,Nuget如何跟踪包的版本?

我用星号*功能在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

简短的回答:刚才的NuGet默认使用的程序集的版本,但你可以在nuspec或在命令行上覆盖..

根据版本号的格式是这样的:

major.minor.build.revision

And auto-incremented build numbers behave like this

默认内部版本号每天增加。默认版本号是随机的。

当您使用自动生成的编号,你应该让VS自动增量构建和版本号,如注释掉示例所示。尽管文档声明版本号是随机的,但在我看来,它并不是随机的。事实上,它似乎整天增加,并可能在第二天重置。但是,我不会为此付钱,因为它可能会改变实施细节。

通过不让VS选择内部版本号,你基本上将它减少到一个随机数,所以它并不令人惊讶,有时修订版的号码比以前的版本号少。除非在nuspec或命令行中重写,否则NuGet只取得程序集版本并使用相同版本的程序包。所以你的根本原因可能就是你选择组件版本号的方式。

如果可以,只要改变你的版本控制方案,以这样的:

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

但是,如果这是不能接受的,那么你将不得不在Nuspec维护版本号或为他们提供在命令行上调用时Nuget pack

+1

现货答案!其实你对版本号是正确的,我猜它是按天重置的,因此我们可以从昨天的版本号中得到较低的版本号。我确实转向构建自动化版本控制方案,并解决了这个问题。 – mare