在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时一样。
答案 0 :(得分:1)
如@TnTinMn所指出的那样,事实证明,问题在于在AssemblyFileVersion中包含5个组件编号,而不是预期的/典型的4个组件编号,导致产生不可靠的结果,如here所述:
文件版本通常是由四个数字组成的字符串,中间用 期间,反映主要版本号,次要版本号, 内部版本号和修订号;例如“ 1.0.4309.00”。如果 版本不是这种格式,则会发生编译器警告,并且 文件属性对话框中显示的结果是不可预测的。 不支持通配符。
将AssemblyInfo.cs AssemblyFileVersion更新为仅包含4个组件编号后,问题消失了。