Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

367
Views
Cómo usar FileSystemWatcher en Linux con .NET 5.0+

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.

over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!