C# 如何从字节或流获取文件版本?
我通过以下方式获取文件版本:C# 如何从字节或流获取文件版本?,c#,.net,windows,C#,.net,Windows,我通过以下方式获取文件版本: var fileVersion = FileVersionInfo.GetVersionInfo(path).FileVersion 但是这个选项不适合我,因为我必须使用非本机工具来获取返回流的文件。我可以从这个流或字节数组中获取文件版本吗?很遗憾,您不能直接这样做 你应该 将文件写入某种临时位置的磁盘 从磁盘上的文件读取版本 删除该文件 简言之,不,当前的工具无法满足您的需求。问题是,正如您所注意到的,FileVersionInfo.GetVersionInf
var fileVersion = FileVersionInfo.GetVersionInfo(path).FileVersion
但是这个选项不适合我,因为我必须使用非本机工具来获取返回流的文件。我可以从这个流或字节数组中获取文件版本吗?很遗憾,您不能直接这样做 你应该
- 将文件写入某种临时位置的磁盘
- 从磁盘上的文件读取版本
- 删除该文件
FileVersionInfo.GetVersionInfo
依赖于磁盘上的物理文件。如果您查看它的内部结构,您会发现它真正做的只是委托给Windows API,而Windows API正是在中完成真正的工作,而Windows API又将文件名作为参数,因此它仅设计为从文件系统进行操作
一种可能的解决方法是删除一个临时文件,其中包含从流中获得的二进制文件,获取所需的版本信息,然后删除该文件
另一种选择是寻找一个库,它可以解析内存中的exe/dll文件,并从中直接提取相关细节。这看起来很有说服力,但显然不喜欢的人并不同意。了解他们的意见很有趣:)