1

我已经注意到几次 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 的更新机制——因为它找不到新版本。

有没有其他人发现这个?

4

1 回答 1

1

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

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

major.minor.build.revision

自动递增的内部版本号的行为如下

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

当您使用自动构建编号时,您应该允许 VS 自动增加构建编号修订编号,就像注释掉的示例所示。尽管文档声称修订号是随机的,但在我看来它不是随机的。事实上,它似乎全天都在增加,并且很可能在第二天重置。但是,我不会指望它,因为它可能是一个可能会改变的实现细节。

通过不让 VS 选择内部版本号,您实际上是将其减少到一个随机数,因此有时修订号小于先前的修订号也就不足为奇了。除非在 nuspec 中或从命令行覆盖,否则 NuGet 只会采用程序集版本并为包使用相同的版本。因此,您的根本原因可能是您选择程序集版本号的方式。

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

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

但如果这是不可接受的,那么您将不得不在 Nuspec 中维护版本号,或者在调用Nuget pack.

于 2012-06-06T12:39:49.870 回答