CS1607:为'文件版本'指定的版本在.NET中不是正常的'major.minor.build.revision'格式

She*_*dan 30 .net warnings wildcard assemblyversionattribute

我试图把我AssemblyVersionAssemblyFileVersion我的项目属性,像这样:

[assembly: AssemblyVersion("3.0.*")]
[assembly: AssemblyFileVersion("3.0.*")]
Run Code Online (Sandbox Code Playgroud)

但我得到这个警告:

CS1607:程序集生成 - 为"文件版本"指定的版本"3.0.*"不是正常的"major.minor.build.revision"格式

AssemblyVersionAttribute ClassMSDN的页面上如下:

您可以指定所有值,也可以使用星号(*)接受默认的内部版本号,修订号或两者.例如,[assembly:AssemblyVersion("2.3.25.1")]表示2为主要版本,3表示次要版本,25表示构建号,1表示版本号.诸如[assembly:AssemblyVersion("1.2.*")]之类的版本号指定1作为主要版本,2作为次要版本,并接受默认的构建和修订号.诸如[assembly:AssemblyVersion("1.2.15.*")]之类的版本号指定1作为主要版本,2作为次要版本,15作为构建号,并接受默认修订号.

请注意粗体部分.有谁知道为什么[assembly: AssemblyVersion("3.0.*")](从我的项目)无效,但[assembly:AssemblyVersion("1.2.*")](从MSDN示例)是有效的?

特别是,我很想知道我是否可以从一个非零的主要数字开始,因为我正在编写的应用程序是该程序的第3版.

更新>>>对不起,这似乎在其他帖子中得到解答...请投票关闭它,谢谢.

Cod*_*ray 64

你假设问题在于这一行:

[assembly: AssemblyVersion("3.0.*")]
Run Code Online (Sandbox Code Playgroud)

当它真的与这一个:

[assembly: AssemblyFileVersion("3.0.*")]
Run Code Online (Sandbox Code Playgroud)

就像你说的问题的接受答案不是这个问题的重复说:

因为AssemblyFileVersionAttribute您不能使用*特殊字符,所以您必须提供完整有效的版本号.

*语法仅适用于该AssemblyVersion属性.它不适用于该AssemblyFileVersion属性.

有两种解决方法可以实现您可能需要的结果:

  1. 简单地省略该AssemblyFileVersion属性.这将导致自动从猜到的组件的文件版本信息AssemblyVersion的属性(它是一个确实支持该*语法).

  2. 打破大枪并安装Build Version Increment插件,它为您提供了更多的版本增量选项,而不是你可以动摇.

  • @Vince它在Visual Studio 2010中无效,无论是针对.NET 4还是其他任何版本.你的意思是它适用于VS 2012吗?这与编译器/链接器的版本有关,而与目标框架无关. (2认同)