Мое приложение проверяет при запуске, есть ли более новая версия файла на общем сетевом диске. Если тот, что находится в общей сетевой папке, новее, он копирует его в локальный каталог приложений и перезаписывает старый. Мой текущий код для этого выглядит примерно так:
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 для Windows»; они определяют пользовательские дисплеи. Цель моего приложения - проверить общий сетевой ресурс, чтобы узнать, доступна ли более новая версия, и скопировать ее локально, если это необходимо. Таким образом, мы можем гарантировать, что все наши клиенты используют самые современные дисплеи.
РЕДАКТИРОВАТЬ 2:
ОК, я дурачился с загрузкой сборок и столкнулся с другой проблемой. Кажется, вы не можете загрузить один и тот же файл дважды, даже если они находятся в разных местах, когда они загружаются через Assembly.ReflectionOnlyLoadFrom
.