1
我有一堆本機(C++)二進制文件,我想從C#控制檯應用程序中掃描和檢索版本信息。使用System.Diagnostics.FileVersionInfo
我可以得到實際的版本字符串,公司名稱等。但是有一個"Build Date"
字符串(由Windows文件屬性"Version"
選項卡顯示),並且它不被FileVersionInfo
檢索。使用C#從本機二進制文件獲取自定義文件版本信息
"Build Date"
似乎是技術上定製的數據放在文件中,我想這就是爲什麼我FileVersionInfo
不會自動獲取這些數據,但有什麼辦法來獲得這些自定義值?
在本地二進制文件,該"Build Date"
串通過.RC文件中包含使用以下部分:
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());
好吧,我可以肯定PInvoke到這些API中,但是絕對沒有.NET API會讓我這樣做嗎? – 2009-11-03 15:29:55
不要這樣想。如果有的話,FileVersionInfo類肯定會是它。 – 2009-11-04 22:45:53