У меня есть процесс powershell, который следит за файлами SQL (в проекте базы данных), а затем запускает действие при изменении файла. Базовая настройка приведена ниже.
$global:SQLFileWatcher = New-Object IO.FileSystemWatcher $rootFolder, $sqlFilter -Property @{
IncludeSubdirectories = $true
NotifyFilter = [IO.NotifyFilters]'LastWrite'
}
$onSqlCreated = Register-ObjectEvent $global:SQLFileWatcher Changed -SourceIdentifier SqlFileChanged -Action {
#Only called when a new file is added to DB project
Write-Host "HERE"
}
При внесении изменений в существующий файл, уже созданный в проекте базы данных Visual Studio, он не запускает наблюдатель за файлами, как если бы время LastWrite не обновлялось. Если я открою Notepad ++ и отредактирую, это будет работать нормально. Кроме того, если я добавляю новый файл SQL (в проект базы данных), он запускает событие наблюдателя за файлом при создании И любых обновлениях этого файла, что было самой странной частью.
Почему он не обновляет атрибуты файла в существующем файле, а только в новых файлах? Или, может быть, лучше задать вопрос: есть ли лучшая настройка NotifyFilter
вместо «LastWrite»?