
Как отключить блокировку файлов в Windows, чтобы заблокированные файлы можно было перезаписывать, как в системах Linux?
Я разрабатываю плагин, который является dll. Перед повторной компиляцией мне всегда нужно выгрузить его в программе, которая его загрузила. Это значительно сократило бы работу, если бы я мог компилировать его всегда и просто перезагружать его позже, выгружая / загружая снова. С Linux это не проблема, компилятор просто переопределяет плагин, и когда он открывается в следующий раз, будет использоваться новая версия. Windows имеет на него блокировку записи, поэтому компилятор не может записать его и прерывает работу.
решение1
Вы не можете «просто» отключить блокировку исполняемых/библиотечных файлов.
Однако вы можетепереместить или переименоватьиспользуемые файлы, поэтому заставьте процесс сборки переместить существующую DLL в другое место и скомпилировать новую на ее месте.
Вполне возможно, что они не добавили скрытый переключатель для этого, потому что различные части ОС предполагаютон всегда будет включен. Например, может случиться так, что код файловой системы ожидает, что всегда есть хотя бы одна ссылка на файл (и, следовательно, пространство может быть освобождено сразу после удаления этой последней ссылки) — поэтому, если вы принудительно удалите используемый файл, это может привести к различным видам повреждения файловой системы, например, к тому, что два файла будут использовать одно и то же дисковое пространство.
Тем не менее,Старая новая вещьоднажды написал, что на самом деле было бы несложно разрешить удаление файлов в стиле Linux в ядре WinNT, и что они просто не сделали этого, чтобы избежать некоторых проблем с совместимостью.