如何在 Windows Vista 和更高版本(Windows 7、2008)中查看 .NET 程序集的程序集版本?
Posted
技术标签:
【中文标题】如何在 Windows Vista 和更高版本(Windows 7、2008)中查看 .NET 程序集的程序集版本?【英文标题】:How can i see the assembly version of a .NET assembly in Windows Vista and newer (WIndows 7, 2008)? 【发布时间】:2011-05-08 00:35:44 【问题描述】:在 windows 2003 和 windows XP 中,您可以右键单击程序集 (.dll) 转到属性,单击版本选项卡,然后您会看到 3 个不同的版本号:程序集版本、文件版本和产品版本。
如果您使用同一个文件并在 Windows 2008 中查看其属性,您将只会看到文件版本和产品版本。
有没有办法在 windows vista 和更高版本(没有第三方工具)中查看 .NET 程序集的程序集版本?
【问题讨论】:
【参考方案1】:没有。不是来自探险家。这是微软有意采取的举措(尽管我不喜欢它)。
您可以通过 powershell:
[Reflection.AssemblyName]::GetAssemblyName('full-path-to\xxxx.dll').Version
此外,如果文件版本未明确设置,它将默认为程序集版本。
这里有一些信息: http://all-things-pure.blogspot.com/2009/09/assembly-version-file-version-product.html
【讨论】:
好答案。谢谢.. 你知道微软为什么这样做吗? 不知道。这当然是一种痛苦。如果有充分的理由,我也想知道。 我一点也不明白。微软的 .NET 开发如此强烈地基于程序集版本,现在他们需要表现得好像该属性不存在? 不错的解决方案,但是,有时它会给出我在my SO question 中描述的意外结果。你能解释一下吗? 仅适用于我的完整路径 =[【参考方案2】:看看https://github.com/ssidpat/powerext
我知道这已经很晚了,但是我在尝试再次查找扩展程序时发现了这个问题,因此其他人也可能会发现它...
【讨论】:
【参考方案3】:您始终可以编写一个 Shell 扩展来将属性页添加到文件属性,就像这里所做的那样 http://sbytestream.pythonanywhere.com/software/asmprops
【讨论】:
我的错,你说没有第三方工具:(【参考方案4】:在 Windows 7 Enterprise 中,您可以使用 Windows 资源管理器右键单击程序集,单击属性,然后单击详细信息选项卡。
“产品版本”属性的程序集版本格式为major.minor.build#.revision#。 “文件版本”属性也有。
不确定这是否适用于其他版本的 Windows 7。
【讨论】:
只有在没有明确设置的情况下才会匹配程序集版本。【参考方案5】:感谢 Ramesh Srinivasan,至少有一种方法可以将文件版本添加到资源管理器窗口的详细信息窗格中。将字符串值添加到名为 PreviewDetails 的 HKEY_CLASSES_ROOT\dll 文件,其值为 prop:System.FileVersion;System.FileDescription;System.DateModified;System.Size。这样,如果您正在处理文件版本与程序集版本匹配的程序集,正如 Jerome 建议的那样,至少您可以通过选择程序集来查看它。我找不到记录可用系统文件属性的任何地方。
【讨论】:
以上是关于如何在 Windows Vista 和更高版本(Windows 7、2008)中查看 .NET 程序集的程序集版本?的主要内容,如果未能解决你的问题,请参考以下文章
从在 nmake 中完成的构建中,如何从 URL (wget) 下载文件?
如何从android API 23和更高版本的操作栏中删除阴影