私のアプリケーションは、共有ネットワーク ドライブに新しいバージョンのファイルがあるかどうかを起動時にチェックします。ネットワーク共有上の方が新しい場合は、それをローカル アプリケーション ディレクトリにコピーし、古いものを上書きします。これを行うための現在のコードは次のようになります。
FileInfo sourceFile = new FileInfo(source + "\\" + fileName);
if(sourceFile.Exists) {
FileInfo destFile = new FileInfo(destination + "\\" + fileName);
if (destFile.Exists && destFile.LastWriteTime >= sourceFile.LastWriteTime)
{
//Using log4net
log.Info("Current " + fileName + " is newer than the one on the server.");
return false;
}
}
ログを確認するLastWriteTime
と、ソース ファイルの が新しいものとして検出されない場合があるようです (ある場合のイベント)。書き込み時間と変更時間が混乱している可能性がありますか? これを達成する方法を知っている人はいますか?
編集(および以下の私のコメントのコピー):私がコピーしているファイルは、ほとんどが私が制御できるDLLファイルです。これらはアプリケーション「Growl for Windows」のアセンブリです。カスタム表示を定義します。私のアプリケーションの目的は、ネットワーク共有をチェックして、利用可能な新しいバージョンがあるかどうかを確認し、必要に応じてそれをローカルにコピーすることです。そうすることで、すべてのクライアントが最新のディスプレイを使用していることを確認できます。
編集2:
OK、アセンブリのロードをいじって、別の問題に遭遇しました。経由でロードした場合、場所が異なっていても、同じファイルを2回ロードできないようですAssembly.ReflectionOnlyLoadFrom
。