【发布时间】: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。