我有一堆本机(C ++)二进制文件,我想扫描并从C#控制台应用程序中检索有关的版本信息。使用System.Diagnostics.FileVersionInfo
我可以获取实际版本字符串,公司名称等。但是其中有一个"Build Date"
字符串(由Windows文件属性"Version"
选项卡显示),并且FileVersionInfo
没有检索到它。
似乎"Build Date"
在技术上是自定义数据放在文件中,我想这就是为什么我FileVersionInfo
不会自动获取这些数据,但有没有办法获取这些自定义值?
在本机二进制文件中,使用以下部分通过.RC文件包含"Build Date"
字符串:
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904e4"
BEGIN
VALUE "Build Date", "11/03/2009"
VALUE "CompanyName", "My Company "
VALUE "FileDescription", "My DLL"
VALUE "FileVersion", VERSTR
VALUE "InternalName", "MyCode.dll"
VALUE "LegalCopyright", "Copyright © Me"
VALUE "ProductVersion", VERSTR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END
然后我尝试在C#中检索信息,如下所示:
FileVersionInfo ver = FileVersionInfo.GetVersionInfo(path);
Console.WriteLine(ver.ToString());