【问题标题】:reflection dll comments反射 dll 注释
【发布时间】:2009-08-14 21:41:20
【问题描述】:

是否可以读取 dll 上的 cmets。 查看 dll 的属性时,注释列在版本下。

我知道我可以获取版本号,但我更愿意获取 cmets,因为它对用户很友好。

Assembly.GetName.Version.ToString --将给出版本号

谢谢

【问题讨论】:

  • 您是指在 Windows 资源管理器中右键单击程序集然后选择“属性”时显示的 cmets?

标签: .net reflection dll


【解决方案1】:

看看System.Diagnostics.FileVersionInfo

FileVersionInfo info = FileVersionInfo.GetVersionInfo(fileName);

Console.WriteLine("{0}, version {1}, comments: {2}", 
                   fileName, info.FileVersion, info.Comments);

这适用于所有类型的 dll,而不仅仅是 .NET 的。

【讨论】:

  • 仅供参考,我做了以下 info.GetVersionInfo(assembly.Location).Comments
【解决方案2】:

我知道当您右键单击文件时在“摘要”选项卡中查看的标题、主题、关键字、评论等是 Windows 中称为“备用数据流”(ADS) 的功能。 ADS 只是 filesystem fork 的 Microsoft 名称。

您应该能够通过 p-invoke 访问 ADS。可以在 CodeProject here 找到一个示例。微软有一些示例 C 代码here

--- 编辑 ---

您看到的 cmets 可以通过FileVersionInfo.Comments 访问。这是一个如何获得它的示例:

string comments = System.Diagnostics.FileVersionInfo.GetVersionInfo(
    @"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll")

结果是“Flavor=Retail”,这正是我在文件下的评论中看到的。

【讨论】:

  • 我正在尝试在版本> 程序集版本、cmets、公司、文件版本、内部名称...产品版本下读取 cmets。
  • 好的,这些注释是 DLL 版本资源中的内容。如果您在 Visual Studio 资源编辑器中打开一个 DLL,您就会明白我的意思。例如,在 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(或您喜欢的任何版本)中打开 mscorlib.dll。展开 DLL 名称和版本文件夹。双击版本信息 1.版本出来了,评论信息在块头English(美国)下面。
猜你喜欢
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-12
  • 2023-04-01
  • 2012-01-20
相关资源
最近更新 更多