背景:
インストールされている .NET Framework が 2.0 から 4.5 までのクライアントで実行する必要があるアプリケーションがあります。このアプリケーションは、多数のファイル (場合によっては 200k を超える個別のファイル) を列挙して操作を実行できる必要があります。
ファイルのインデックスを構築するために、アプリケーションは現在System.IO.DirectoryInfo.GetFiles()を使用しています。これは、処理コンポーネントが作業を開始する前にパス ツリー全体のインデックスが作成されるまで待機する必要があるため、パフォーマンス ヒットになります。一部の古風なテープ マルチローダーと一部の不適切に作成されたファームウェアが原因で、一部のディレクトリをトラバースすると、テープからの読み取りがトリガーされる可能性があります。処理時間が数十秒から数十分に跳ね上がります。
.NET 4.0 は、この問題を軽減するSystem.IO.Directory.EnumerateFiles(Path)メソッドを提供します。ただし、4.0+ にアップグレードされた datter コンソールはごくわずかであり、近代化を求める私たちの嘆願は敵意に満ちています。
質問:
単一のバイナリでGetFiles と EnumerateFiles の両方のメソッドを実装することは可能ですか? 事実上、これは .NET 2.0 を対象とする単一のバイナリであり、実行時に 4.0 フレームワークが使用可能であると判断された場合に .NET 4.0 メソッドを呼び出すことができます。
言及する前に: データを変更することは、クライアントにとってオプションではありません。私はもう試した。私は今まで試したことがありますか。