Estoy tratando de observar cambios en un directorio específico usando la clase FileSystemWatcher. Basado en gran medida en el ejemplo de los documentos de MS , que funciona bien en mi máquina con Windows. Sin embargo, el problema es que estoy apuntando a Ubtuntu 18.04 lts y más para ejecutar esto. Aparentemente, el observador se configura bien (el código se ejecuta y los mensajes de consola/registro se imprimen), pero ninguno de los eventos del sistema de archivos se activa, es decir: Cambiar/Crear/Eliminar/Renombrar/etc. Nada los activa.
¿Se necesitan detalles de configuración no documentados u "ocultos" para trabajar con Linux, o no se admite por completo y, aunque está en .NET 5, no se debe usar para compilaciones de Linux/Mac/Unix? No puedo encontrar ningún documento definitivo sobre el uso que no sea de Windows, pero pensé que .NET 5 estaba destinado a funcionar de manera "portátil". Se agradecería cualquier consejo/detalles, ya que estoy seguro de que otros también se han encontrado con esto, o al menos es probable que lo hagan.
Código actual que funciona con la compilación de Windows pero no con Linux:
public void WatchFolder() { string directoryPath = _configuration["FolderLocation"]; if (string.IsNullOrWhiteSpace(directoryPath)) throw new Exception("Folder location was not set."); try { // setup file system watcher using var watcher = new FileSystemWatcher(directoryPath); watcher.NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Security | NotifyFilters.Size; // add handler methods watcher.Changed += OnChanged; watcher.Created += OnCreated; watcher.Deleted += OnDeleted; watcher.Renamed += OnRenamed; watcher.Error += OnError; watcher.IncludeSubdirectories = true; watcher.EnableRaisingEvents = true; // wait for next key to kill execution Console.ReadLine(); } catch (Exception ex) { _logger.LogError($"Couldn't watch folder: {directoryPath}\nBecause: {ex}"); } }Editar
Intentar usar la respuesta en esta pregunta SO relacionada: https://stackoverflow.com/a/57025115/8645002 no solucionó el problema. El delegado aún no se activa cuando se ejecuta el exe integrado en un entorno Linux.
nota: compilación para Linux x64 archivo único independiente exe.