猿问

注销用户 OneDrive API

我正在尝试使用 .net core 获取文件版本。


方法一


string file = @"C:\somefile.dll";

Console.WriteLine(AssemblyName.GetAssemblyName(file).Version.ToString());

Method1 中的问题是,如果文件不是程序集,则会抛出 BadImageFormatException


方法2


string file = @"C:\hostpolicy.dll";

FileVersionInfo fileversion = FileVersionInfo.GetVersionInfo(file);

Console.WriteLine(fileversion.FileVersion);

上面代码的问题是它返回的结果与 Windows 文件资源管理器中显示的结果不同。


请参阅附图。

Windows资源管理器中显示的文件版本是“2.2.27414.6”,

但是我使用FileVersion属性得到的版本是“2.2.27414.06 @BuiltBy:dlab14-DDVSOWINAGE021 @Branch:release/2.2 @SrcCode:https: //github.com/ dotnet/core-setup/tree/6b8ad509b6a48bcca07e8c413d6ffed8988547cc。提交哈希:6b8ad509b6a48bcca07e8c413d6ffed8988547cc”。

白猪掌柜的
浏览 75回答 1
1回答

慕盖茨4494581

我做了一些研究。Windows 资源管理器和文件属性对话框不会列出文件版本字符串,它们通过手动将文件版本部分放在一起来格式化文件版本信息。当我修改 AssemblyFileVersion 字段以包含一些虚假信息(例如[assembly: AssemblyFileVersion("1.0.0.0 @asdfasdf asdf asdf asdf")],Windows 资源管理器)时,文件属性对话框仅列出了您上面指出的文件版本。但是当我调试并查看 FileVersion 字段时,发现了额外的虚假信息。要回答您的问题,您似乎还需要通过手动将文件版本部分手动组合在一起来创建文件版本(即FileMajorPart.FileMinorPart.FileBuildPart.FilePrivatePart)
随时随地看视频慕课网APP
我要回答