Просто переименуйте этот файл.Это подойдет тем, кто пытается написать в это место.
Примечания:
1) Конечно, файл еще не удален физически.Хорошо бы выполнить трюк MoveFileEx
, упомянутый здесь, чтобы завершить работу.
2) Если вы хотите удалить заблокированный файл, чтобы записать что-то новое вместо него (например, во время сборки), просто переименуйте файл вимя GUID.Если вам нужна чистая папка, используйте игнорируемое расширение / скрытый атрибут или переименуйте файл по пути в %TEMP%
(если на том же диске).
3) Не все заблокированные файлы могутбыть переименован, но это работает для меня как 90% практических приложений.Вы можете переместить файл, не влияя на открытый дескриптор чтения / записи / выполнения, он будет продолжать работать с перемещенным файлом просто хорошо (если, конечно, перемещен в том же томе NTFS).
4) Это то, что установщик WindowsВ основном это делается до того, как он попросит вас перезагрузиться, когда-нибудь в ближайшее время: уберите файл с глаз, запланируйте удаление после перезагрузки.Обычно недавно установленное приложение можно использовать сразу.
Практическое использование:
Мой любимый вариант с MSBuild.Переопределение задачи <Copy/>
с этим материалом заставляет всю сборку идти в Linux.Вам все равно, если предыдущая версия все еще работает где-то, вы все равно можете ее собрать и запустить.Старое приложение продолжает использовать старую версию файлов.Новое приложение загружает только что написанную версию.
Возможно, переместится на %TEMP%
, если находится на том же диске (но не в моем случае).Я бы просто переименовал их в расширение, которое игнорируется текущим клиентом контроля версий.