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

.NET: Version string number and length with ClickOnce

如果您使用 ClickOnce 来管理您的部署和更新,它可能被配置为主动查询 URL/manifest 以获取您项目的最新版本,然后将其当前版本与此进行比较以确定是否有更新需要完成。有谁知道比较例程的数值限制是多少?因为我有一个自动构建的过程,所以我们将时间戳记放入版本的四个部分(例如 1.0.0.x;它只是没有任何符号的数字)。但是,我担心这里有一个八位数可能会导致比较失败。 Microsoft 不,不,对意外要求做得很好。

有人有这方面的经验吗?

谢谢。

走这条路吧。如果您开始插入更大的数字,最终 setup.exe 将轮询最新版本,然后失败 "Cannot continue. The application is improperly formatted. Contact the application vendor for assistance."

如果查看详细信息,您会看到一条日志,其中可能包含以下内容:

+ 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",您会发现自己位于 FourPartVersionType Simple Type,它提供以下正则表达式:

([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。