的背景:
我有一个应用程序需要在其安装的 .NET 框架范围从 2.0 一直到 4.5 的客户端上运行。此应用程序必须能够对大量文件(在特定情况下超过 200k 个离散文件)进行枚举和执行操作。
为了构建文件索引,应用程序当前使用System.IO.DirectoryInfo.GetFiles()。这会影响性能,因为处理组件必须等待整个路径树被索引才能开始工作。由于一些过时的磁带多加载器和一些编写不佳的固件,遍历某些目录可能会触发从磁带读取 - 将处理时间从几十秒缩短到几十分钟。
.NET 4.0 提供了System.IO.Directory.EnumerateFiles(Path)方法,可以缓解这个问题。然而,只有少数 datter 控制台已升级到 4.0+,我们要求进行现代化改造的请求遭到了敌意。
问题:
是否可以在单个二进制文件中同时实现 GetFiles 和 EnumerateFiles 的方法?实际上,这将是针对 .NET 2.0 的单个二进制文件,如果在运行时确定 4.0 框架可用,则能够调用 .NET 4.0 方法。
在提到之前:更换数据不是我们客户的选择。我试过了。我有没有试过。