使用通配符自动增加版本修订号

Auto-increment version revision number with wildcard

我正在尝试提高每个版本的修订号。

因此我尝试将项目程序集信息 -> 程序集版本和文件版本更改为

1 0 0 *
1 0 0 *

然而,VS2017告诉我

"Assembly file version: In this field, wildcards ("*") aren't allowed.

我该怎么做?

您应该删除 AssemblyFileVersion 属性并只保留 AssemblyVersion。如果 AssemblyFileVersion 出现在汇编信息中,文件版本将在编译时自动设置为与 AssemblyVersion 相同。

引用 the documentation:

If the AssemblyFileVersionAttribute is not supplied, the AssemblyVersionAttribute is used for the Win32 file versionthat is displayed on the Version tab of the Windows file properties dialog.

我发现了这个:

https://marketplace.visualstudio.com/items?itemName=PrecisionInfinity.AutomaticVersions

好笑的是 VS 没有内置这个。

还有一个选项是:https://neele.name/item/versioning-controlled-build

这个适用于 Visual Studio 2017。

我发现它易于使用,并且有一个优点,即您可以选择是否调用它,具体取决于您是在创建测试版本还是发布版本。

我知道这是一个非常古老的问题,但是在谷歌搜索“自动增量版本 visual studio”时会出现它。 由于目前的答案并没有真正回答问题,所以这就是我所做的:

汇编版本看起来像 1 1 1 *

文件版本如 1 1 1 0。

您不能在文件版本上使用通配符 (*)。如果您在 Assembly 上使用它们,请在通配符 (1 1 * EMPTY) 后留下空格。

有效,错误

"Assembly file version: In this field, wildcards ("*") aren't allowed."

没有出现。

如果这仍然给您带来麻烦,您可以删除编辑 .csproj 的“确定性”标志

通过编辑 .vbproj 文件确保项目“确定性”属性 设置为 false

<PropertyGroup>
    <Deterministic>false</Deterministic>
</PropertyGroup>

然后打开AssemblyInfo.vb文件,设置程序集版本属性如下:<Assembly: AssemblyVersion("1.0.*")>

删除或comment-out <Assembly: AssemblyFileVersion(...)> 属性,因为它不能使用通配符,如果不存在,文件将继承版本程序集号。

将版本号设置为 1.0.*,如上例所示,结果版本号类似于 1.0.8888.99999,其中构建等于自 2000 年 1 月 1 日本地以来的天数时间,修订等于自当地时间午夜以来的秒数(不考虑夏令时的时区调整)除以 2。

详情见the Docs site