【问题标题】:File version in AssemblyInfo.cs not reflected in Windows Explorer File Properties?AssemblyInfo.cs 中的文件版本未反映在 Windows 资源管理器文件属性中?
【发布时间】:2011-07-15 09:11:41
【问题描述】:

我有一个包含 AssemblyInfo.cs 文件的 VS2010 项目。这有:

[assembly: AssemblyFileVersion("10.0.1.0")]

当我运行我的应用程序并从正在执行的程序集中询问文件版本时,它会选择 10.0.1 没问题。但是,如果我在 Windows 资源管理器中右键单击 .exe 文件并打开属性对话框 - 详细信息选项卡显示的文件版本为 10.0.0.0(!)

为什么 Windows 看不到文件版本的 10.0.1?我一定是错过了什么……

附加信息:如果我将版本资源添加到我的应用程序的 .res 文件,则信息会显示在编译的可执行文件中,但如果我没有版本资源中的信息,编译的 exe 会忽略该文件和“信息"AssemblyInfo.cs 中的(即产品)版本属性。

【问题讨论】:

  • 您确定您正在查看正确的 EXE(也许它有不同的输出路径)?或者,您可能在 DLL 项目中更新了 AssemblyInfo.cs,却忘记了生成 EXE 的那个。
  • 解决方案非常简单。只有一个 Windows 窗体项目正在编译。我确定我正在查看正确的 EXE。
  • AssemblyInfo.cs 的构建操作是否设置为编译?您确定在进行发布构建时没有查看 Debug 版本吗?

标签: .net assemblyinfo assemblyfileversion


【解决方案1】:

您的项目中是否有包含版本资源定义的 .RC 或 .RES 文件?也许自定义构建目标或脚本会添加它?如果是这种情况,则会选择它而不是 AssemblyVersion.cs 中定义的版本(至少 Michael Kaplan 是这么说的 here)。

article series 中,他还表明来自“.MUI”文件的版本信息可能会覆盖来自实际 EXE 文件的版本信息——尽管,如果我理解正确的话,这只是 native/ 的一个“问题”非托管构建。

【讨论】:

  • 我认为发生的事情是,当我添加一个 .res 文件时,AssemblyInfo.cs 开始被忽略。我最终使用了 .res 文件中的版本资源,因为没有从 AssemblyInfo.cs 文件中流出。
  • 谢谢,我想不通。 WIX 抱怨它找不到!(bind.FileVersion ...),这成功了
【解决方案2】:

我在 VS2008 上进行 SmartDevice 开发。将 AssemblyInfo.cs 中的版本号更改为 "2.1.*" 后,我发现无法恢复更改。不管我做什么。

在删除<project_name>.suobin/ *obj/ *、在发布、调试模式下清理/重建后,似乎没有任何区别。

最后我先从 CE 设备上卸载了该应用程序,然后再次重试。 这一次,Assembly.GetExecutingAssembly().GetName().Version 开始报告正确的版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 2012-11-22
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    相关资源
    最近更新 更多