【问题标题】:AssemblyFileVersion attribute is being ignoredAssemblyFileVersion 属性被忽略
【发布时间】:2011-10-25 18:18:56
【问题描述】:

我在使 AssemblyVersion 与我正在处理的类库中的 AssemblyFileVersion 属性不同时遇到问题。

所以,我尝试创建一个空的(除了 Class1.cs)类库来查看它是否是某个地方的设置,但我得到了相同的行为。

看来 AssemblyVersion 属性只是被忽略了。

这是我的 AssemblyInfo.cs 文件中的相关位...

[assembly: AssemblyVersion("0.1")]
[assembly: AssemblyFileVersion("1.1.0.9")]

这是在 Windows 资源管理器中的外观...

是否有某个设置可以控制这个?

编辑: 我发现一个文件存在差异,所以不是 Windows 资源管理器为两个不同的字段显示相同的值,这与从编译器/链接器生成 DLL 的方式有关...

【问题讨论】:

  • 产品版本!= 组装版本。这看起来对我来说工作正常......
  • @Marc,那么 AssemblyVersion 属性在 Windows 资源管理器中映射到什么?
  • 很确定它 used 显示,但实际上我无法让它在 win-7 中显示。完全有可能答案很简单:它根本不会影响资源管理器,但仍然是程序集定义的重要组成部分。
  • 我确定它用于显示不同的值,我刚刚检查并只能在我正在处理的项目中找到一个具有不同产品/文件版本的文件。 log4net 有 1.2.10.0(文件)和 1.2(产品)。现在我知道我在资源管理器中看到了错误的东西,除了有点被嘲笑之外,我想知道如何/在哪里可以检查程序集版本属性。嗯,在这种情况下,也许反射器是我的朋友。
  • 这可能是我显示两者的记忆一直回到 XP

标签: .net assemblyversionattribute


【解决方案1】:

这里的关键问题是 Windows 对托管程序中的属性一无所知。它读取 unmanaged 文件版本资源。使用 /win32res 编译选项嵌入到 C# 程序集中的那个。如果您不使用该选项,编译器会默认自动生成它,使用您在 AssemblyInfo.cs 中指定的程序集属性值来创建资源。

但非托管文件版本资源没有标准字段来指定 [AssemblyVersion] 之类的任何内容。仅 [AssemblyFileVersion]。编译器实际上发出它,版本资源是可扩展的。但 Windows XP 是仍然显示这些自定义字段的最后一个版本。您可以通过在 Visual Studio 中使用 File + Open + File 打开程序集来查看该非托管资源。

是的,蹩脚又烦人。 MS 的 Windows 小组不喜欢迎合托管代码。

【讨论】:

    【解决方案2】:

    对,找到答案了:-)

    您需要编辑 AssemblyInfo.cs 并在底部添加以下内容

    [assembly: AssemblyInformationalVersion("4.4.4.4")]
    

    该值显示在资源管理器的“产品版本”中。 AssemblyInformationalVersion 是可选的。如果未给出,则使用 AssemblyVersion。

    有关此主题的更多信息是here

    【讨论】:

    • 是的,我找到了该属性,但没有尝试,因为我只是想检查 AssemblyVersion 是什么。谢谢。
    • 我只是有不同的 AssemblyVersionAssemblyFileVersion 条目,而 AssemblyFileVersion 用于资源管理器中的产品和文件版本。 (仍然可以用AssemblyInformationalVersion“修复”Product version,但这与上面的内容略有不同。我认为如果没有AssemblyInformationalVersionAssemblyFileVersion那么 AssemblyVersion被使用。)
    【解决方案3】:

    在我的电脑上检查,它实际上工作正常。

    探索者:

    属性:

    其他不同的是:

    如果有帮助的话,我的 windows explorer.exe 版本是 6.1.7601.17567。视窗 7 SP1

    自己在 Visual Studio 上测试这个

    [assembly: AssemblyVersion("2.2.2.2")]
    [assembly: AssemblyFileVersion("3.3.3.3")]
    

    给出结果: 所以看起来 Visual Studio 在这里做错了。

    【讨论】:

      猜你喜欢
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 2015-09-09
      相关资源
      最近更新 更多