Я пытаюсь написать программу, которая будет использоваться для применения обновлений к приложению.Из-за особенностей приложения некоторые файлы будут заблокированы (главным образом IIS) и не могут быть перезаписаны с помощью File.Copy(target)
.При выполнении задачи вручную наша служба поддержки часто копирует файлы с помощью проводника Windows, который разблокирует файл, позволяя им скопировать новый файл.
Почему это работает при работе с Windows Explorer и почему происходит сбойтак печально, когда вы делаете это в коде?
Код, который я использую, примерно такой:
File.Move( target, tempPath )
File.Copy( source, target )
С модульным тестом, который открывает и блокирует файл, который вы затем пытаетесь перезаписать:
var source = "c:\\source.txt";
var target = "c:\\target.txt";
var temp = "c:\\temp\\fake-target.txt";
using ( var lockedFile = System.IO.File.OpenWrite( target ) ) {
File.Move( target, temp )
File.Copy( source, target )
}
Любые предложения будут великолепны.Спасибо за вашу помощь.