如何从URL获取文件版本资源中的原始文件名?
解决远程DLL文件原始文件名获取问题
FileVersionInfo.GetVersionInfo() 仅支持本地文件路径,无法直接解析远程URL指向的文件,这就是你当前代码失效的核心原因。要获取远程DLL的原始文件名,需先将文件下载到本地临时目录,再读取其版本资源,具体实现如下:
实现步骤
- 下载远程DLL到本地临时文件
- 读取本地临时文件的版本信息,提取原始文件名
- 清理临时文件(避免本地残留)
完整代码示例
using System; using System.IO; using System.Net.Http; using System.Diagnostics; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var dllUrl = "https://cdn.example.com/c6244c971f.dll"; string tempFilePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + ".dll"); try { // 下载远程文件到本地临时路径 using (HttpClient client = new HttpClient()) { byte[] fileBytes = await client.GetByteArrayAsync(dllUrl); await File.WriteAllBytesAsync(tempFilePath, fileBytes); } // 读取本地文件的版本信息 FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(tempFilePath); Console.WriteLine("原始文件名: " + fileVersionInfo.OriginalFilename); } catch (Exception ex) { Console.WriteLine("获取失败: " + ex.Message); } finally { // 清理临时文件 if (File.Exists(tempFilePath)) { File.Delete(tempFilePath); } } } }
注意事项
- 确保程序有临时目录的写入权限
- 异常处理覆盖了网络请求失败、文件读写失败等常见场景
- 若需频繁处理此类文件,可添加缓存逻辑减少重复下载
内容的提问来源于stack exchange,提问作者MB_18
相关产品推荐
相关产品推荐

