Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

358
Vistas
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
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda