C# .NET:带有ClickOnce的版本字符串编号和长度

C# .NET:带有ClickOnce的版本字符串编号和长度,c#,visual-studio,clickonce,C#,Visual Studio,Clickonce,如果使用ClickOnce管理部署和更新,则可能会将其配置为主动查询项目最新版本的URL/清单,然后将其当前版本与此进行比较,以确定是否需要进行更新。有人知道比较程序的数值极限是多少吗?因为我有一个自动化的过程来进行构建,所以我们在版本的四个组件中添加了一个时间戳(例如,1.0.0.x;它只是没有任何符号的数字)。然而,我担心在这个位置有一个8位数的数字可能会破坏比较。微软没有这样做的好与意外的要求 有人有这方面的经验吗 谢谢。我们沿着小路走吧。如果开始插入较大的数字,setup.exe最终将轮

如果使用ClickOnce管理部署和更新,则可能会将其配置为主动查询项目最新版本的URL/清单,然后将其当前版本与此进行比较,以确定是否需要进行更新。有人知道比较程序的数值极限是多少吗?因为我有一个自动化的过程来进行构建,所以我们在版本的四个组件中添加了一个时间戳(例如,1.0.0.x;它只是没有任何符号的数字)。然而,我担心在这个位置有一个8位数的数字可能会破坏比较。微软没有这样做的好与意外的要求

有人有这方面的经验吗


谢谢。

我们沿着小路走吧。如果开始插入较大的数字,setup.exe最终将轮询最新版本,然后以“无法继续。应用程序格式不正确。请与应用程序供应商联系以获取帮助”失败

如果查看详细信息,您将看到一个日志,其中可能会显示以下内容:

+ The 'version' attribute is invalid - The value '1.0.0.161739' is invalid according to its datatype 'urn:schemas-microsoft-com:asm.v1:fourPartVersionType' - The Pattern constraint failed.
+ The Pattern constraint failed.
如果您在Google上搜索“fourPartVersionType”,您将发现自己位于,它提供以下正则表达式:

([0-9]{1,4}|[0-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\.([0-9]{1,4}|[0-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){3}

这基本上将每个组件限制为四位或五位数字,并且后者基本上不超过65536。

在封面下,它似乎使用
System.Version
来解析和比较值,因此应用程序似乎仅限于
int.MaxValue
。这是否足够?老实说,是什么反对不时增加修订版/次要版本?如果不是每次提交都递增,那么65536版本就足够了。即使如此,您仍然需要一种持久性方法,以便能够保持不断增加的数量。如果你不能适应这种情况(如在这种情况下,问题所暗示的),你可能希望使用时间戳(下一个自然现象)。