.net CS1607:为';文件版本';不在正常';大调、小调、构建、修订和#x27;NET格式

.net CS1607:为';文件版本';不在正常';大调、小调、构建、修订和#x27;NET格式,.net,warnings,wildcard,assemblyversionattribute,.net,Warnings,Wildcard,Assemblyversionattribute,我正在尝试在项目中设置我的AssemblyVersion和AssemblyFileVersion属性,如下所示: [assembly: AssemblyVersion("3.0.*")] [assembly: AssemblyFileVersion("3.0.*")] 但我得到这个警告: CS1607:程序集生成--为“文件版本”指定的版本“3.0.*”不在正常版本中 “主要.次要.构建.修订”格式 在的AssemblyVersionAttribute类页面上有以下内容: 您可以指定所有值,也

我正在尝试在项目中设置我的
AssemblyVersion
AssemblyFileVersion
属性,如下所示:

[assembly: AssemblyVersion("3.0.*")]
[assembly: AssemblyFileVersion("3.0.*")]
但我得到这个警告:

CS1607:程序集生成--为“文件版本”指定的版本“3.0.*”不在正常版本中 “主要.次要.构建.修订”格式

在的
AssemblyVersionAttribute类
页面上有以下内容:

您可以指定所有值,也可以接受默认生成 使用星号(*)表示编号、修订号或两者。对于 例如,[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


更新>>>对不起,这似乎在另一篇文章中得到了回答。。。请投票关闭它,谢谢。

您假设问题出在这一行:

[assembly: AssemblyVersion("3.0.*")]
当它真的与这个有关时:

[assembly: AssemblyFileVersion("3.0.*")]
比如说:

对于
AssemblyFileVersionAttribute
不能使用*特殊字符,因此必须提供完整有效的版本号

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

这里有两种变通方法可以实现您可能希望的结果:

  • 只需完全忽略
    AssemblyFileVersion
    属性。这将导致从
    AssemblyVersion
    属性(该属性确实支持
    *
    语法)自动推测程序集文件版本信息

  • 打破大炮,安装,这为您提供了更多的版本增量选项,您可以摇杆在


  • 可能是重复的谢谢,你说得很对。。。不知怎的,我完全错过了另一篇文章中的那一行,然后我回来删除这篇文章,但你已经回答了,所以我不能。我投票决定将其关闭。此版本的更新,AssemblyFileVersion接受.NET 4以后版本中的
    *
    字符。@Vince它在Visual Studio 2010中不起作用,无论是针对.NET 4还是任何其他版本。你的意思是说它与VS 2012兼容吗?这与编译器/链接器的版本有关,而与目标框架无关。@CodyGray,很抱歉,你是对的。我在VS land忙得不可开交,忽略了隐藏的内容:)“不支持外卡”