Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

366
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda