背景:
我的应用程序需要在安装的.NET框架版本从2.0到4.5的客户端上运行。该应用程序必须能够枚举和操作大量文件(在某些情况下超过200k个离散文件)。
为了构建文件索引,该应用程序目前使用System.IO.DirectoryInfo.GetFiles()。这会导致性能损失,因为处理组件必须等待整个路径树被索引完毕才能开始工作。由于一些古老的磁带多载机和一些编写不良的固件,遍历某些目录可能会触发对磁带的读取 - 使处理时间从几十秒增加到几十分钟。
.NET 4.0提供了System.IO.Directory.EnumerateFiles(Path)方法,可以缓解此问题。但是,只有少数数据台式机已升级到4.0+,我们的现代化请求遭到了敌视。
问题:
是否可能在单个二进制文件中实现GetFiles和EnumerateFiles方法? 实际上,这将是一个针对.NET 2.0的单个二进制文件,具有在运行时确定4.0框架是否可用的能力。
在提到这点之前:我们无法更换数据台式机。我试过了,真的。