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

359
Visualizações
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 à 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