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

355
Vistas
How to use FileSystemWatcher on Linux with .NET 5.0+

I'm trying to watch for changes in a specified directory using the FileSystemWatcher class. Based heavily off of the example on the MS docs which works fine on my windows machine. The problem though, I'm targeting Ubtuntu 18.04 lts and greater for running this. The watcher apparently sets up just fine (code executes and console/logging messages are printed out) but none of the file system events are ever triggered, ie: Change/Create/Delete/Rename/etc nothing triggers those.

Are there any undocumented or "hidden" setup details needed to work with Linux, or is this not supported altogether and even though it's in .NET 5 shouldn't be used for Linux/Mac/Unix builds? I can't find any definitive docs on non-Windows usage, but thought that .NET 5 was meant to work "portably." Any tips/details would be appreciated as I'm sure others have come across this as well, or are at least likely to.

Current code that works with Windows build but not 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}");
    }
}

Edit

Attempting to use the answer in this related SO quetion: https://stackoverflow.com/a/57025115/8645002 did not fix the issue. The delegate still doesn't trigger when running the built exe in a Linux environment.

note: building for Linux x64 single file self-contained 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