【问题标题】:CS1607: The version specified for the 'file version' is not in the normal 'major.minor.build.revision' format in .NETCS1607:为“文件版本”指定的版本不是 .NET 中的正常“major.minor.build.revision”格式
【发布时间】:2013-03-19 16:59:57
【问题描述】:

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

[assembly: AssemblyVersion("3.0.*")]
[assembly: AssemblyFileVersion("3.0.*")]

但我收到此警告:

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

AssemblyVersionAttribute Class 页面MSDN 上的内容如下:

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

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

特别是,我很想知道是否可以从非零主编号开始,因为我正在编写的应用程序是该程序的版本 3。

更新 >>> 抱歉,这似乎在其他帖子中得到了回答...请投票关闭它,谢谢。

【问题讨论】:

标签: .net warnings wildcard assemblyversionattribute


【解决方案1】:

您假设问题出在这一行:

[assembly: AssemblyVersion("3.0.*")]

当它实际上是这个时:

[assembly: AssemblyFileVersion("3.0.*")]

就像the accepted answer to the question that you say is not a duplicate of this one 说的:

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

* 语法AssemblyVersion 属性一起使用。它不适用于AssemblyFileVersion 属性。

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

  1. 完全省略AssemblyFileVersion 属性。这将导致程序集文件版本信息自动从AssemblyVersion 属性(这是确实支持* 语法的属性)。

  2. 拿出大炮并安装Build Version Increment add-in,它为您提供了比您动摇的更多的版本增量选项。

【讨论】:

  • 谢谢,你说的很对……不知怎的,我完全错过了另一篇文章中的那句话,然后我回到这里删除了这篇文章,但你已经回答了,所以我不能.我已经投票决定关闭它。
  • 对此的更新,AssemblyFileVersion 在 .NET 4 及以后版本中接受 * 字符。
  • @Vince 它在 Visual Studio 2010 中不起作用,无论是针对 .NET 4 还是任何其他版本。你的意思是它适用于VS 2012吗?这与编译器/链接器的版本有关,与目标框架无关。
  • @CodyGray 抱歉,您是对的。我在 VS 领域太忙了,忽略了幕后的内容 :)
猜你喜欢
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多