【问题标题】:File version 0.0.0.0 in Windows Explorer file properties 'Details' tab of .exe compiled with Visual Studio 2017使用 Visual Studio 2017 编译的 .exe 的 Windows 资源管理器文件属性“详细信息”选项卡中的文件版本 0.0.0.0
【发布时间】:2019-07-04 19:22:07
【问题描述】:

在 Visual Studio 2010 中,如果我的 AssemblyInfo.cs 包含这些行(其中“2010.1.2.3.4”实际上是当前的 year.month.day.hour.minute):

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("2010.1.2.3.4")]

然后我可以在 Windows 资源管理器中查看生成的 .exe 的文件属性,详细信息选项卡将显示:

File version 2010.1.2.3
Product version 2010.1.2.3.4

但是,在具有完全相同 AssemblyInfo.cs 的 Visual Studio 2017 中,生成的 .exe 文件属性详细信息选项卡显示:

File version 0.0.0.0
Product version 2010.1.2.3.4

在 SO 上似乎有很多 类似 帖子,但我找不到任何 exact 匹配项来解释为什么会发生这种情况或如何解决它,以便“文件版本”在使用 VS2017 构建 .exe 时显示为 2010.1.2.3,就像使用 VS2010 构建 .exe 时一样。

【问题讨论】:

  • 我尝试在 VS2017 .NET 4.7.2 中创建一个控制台应用程序,一旦我编译了我在 Widows Explorer 中看到的内容,AssemblyFileVersion 用于文件版本和产品版本
  • 你在解决方案中哪个项目的属性中设置了这些值吗?
  • @Darkonekt 我同时针对 4.0 和 4.6.1 并且都产生了相同的结果。我没有 4.7.2 作为选项,我认为这是因为我没有安装它。虽然我无法想象如果我以 4.7.2 为目标,这会为我解决。您看到我在 VS2010 中看到的行为非常奇怪。让我想知道是否从项目升级到 2017 年有什么不正确的延续。如果我创建一个全新的项目,我会看看会发生什么。
  • @Jimi 这些值是在项目的 AssemblyInfo.cs 文件中设置的。如果您在 VS 中查看项目的属性,那里也会出现相同的值。
  • 我可以使用 VS2013 和 VS2017 重现您的问题。在 VS2017 中,似乎问题在于使用 5 个版本号组件与预期的 4 个版本号组件(主要版本号、次要版本号、内部版本号和修订号)。使用非标准版本格式为documented as causing unpredictable explorer property results。

标签: c# .net winforms


【解决方案1】:

正如@TnTinMn 所指出的,问题在于在 AssemblyFileVersion 中包含 5 个组件编号,而不是预期/典型的 4 个,这会产生不可靠的结果,如 here 所记录的那样:

文件版本通常是一个由四个数字组成的字符串,以 句点,反映主要版本号,次要版本号, 版本号和修订号;例如,“1.0.4309.00”。如果 版本不是这种格式,会出现编译器警告,并且 文件属性对话框中显示的结果是不可预测的。 不支持通配符。

在将 AssemblyInfo.cs AssemblyFileVersion 更新为仅包含 4 个组件号后,问题就消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 2011-07-15
    • 1970-01-01
    • 2010-11-11
    • 2015-05-05
    • 1970-01-01
    相关资源
    最近更新 更多