firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.

FileSystemWatcher не работает в линуксе при добавлении пакетов, как исправить?

Итак проблема в том что вот эта программа перестает работать при добавлении пакетов

using System;
using System.Diagnostics;
using System.IO;
using System.Threading;

namespace watcher
{
    internal class Program
    {
        private const string FileName = "params.json";
        private static string _exePath;
        private static int Main(string[] args)
        {
            if (args.Length < 2) return ShowHelp();
            var watchFolder = args[0];
            _exePath = args[1];
            var watcher = new FileSystemWatcher
            {
                Path = watchFolder,
                Filter = FileName,
                IncludeSubdirectories = true,
                NotifyFilter = NotifyFilters.LastAccess |
                               NotifyFilters.LastWrite |
                               NotifyFilters.FileName |
                               NotifyFilters.DirectoryName,
                EnableRaisingEvents = true
            };
            watcher.Created += OnChanged;

            while (true)
            {
                Thread.Sleep(1000);
            }
        }

        private static int ShowHelp()
        {
            Console.WriteLine("usage: watcher path_to_watch_folder path_to_executable");
            return -1;
        }

        private static void OnChanged(object sender, FileSystemEventArgs e)
        {
            Console.WriteLine(e.FullPath);
            Process.Start(_exePath, e.FullPath);
        }
    }
}


Файл проекта который работает
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

</Project>


Не работающий
<Project Sdk="Microsoft.NET.Sdk">

	<PropertyGroup>
		<OutputType>Exe</OutputType>
		<TargetFramework>net5.0</TargetFramework>
	</PropertyGroup>

	<ItemGroup>
		<PackageReference Include="Dapper" Version="2.0.78" />
		<PackageReference Include="Microsoft.Extensions.Options" Version="5.0.0" />
		<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="5.0.0" />
		<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="5.0.0" />
		<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="5.0.0" />
		<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" />
		<PackageReference Include="Microsoft.Extensions.Logging" Version="5.0.0" />
		<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="5.0.0" />
		<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="5.0.0" />
		<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" />
		<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.0" />
		<PackageReference Include="Pomelo.Data.MySql.Unofficial" Version="1.0.1" />
		<PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.0" />
	</ItemGroup>

	<ItemGroup>
	  <None Update="appsettings.Debug.json">
	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </None>
	  <None Update="appsettings.Production.json">
	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </None>
	  <None Update="appsettings.json">
	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </None>
	  <None Update="Data\20200817T182946\e280116060000206126d2423_0.jpg">
	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </None>
	  <None Update="Data\20200817T182946\e280116060000206126d2423_1.jpg">
	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </None>
	  <None Update="Data\20200817T182946\e280116060000206126d2423_2.jpg">
	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </None>
	  <None Update="Data\20200817T182946\e280116060000206126d2423_3.jpg">
	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </None>
	  <None Update="Data\20200817T182946\e280116060000206126d2423_4.jpg">
	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </None>
	  <None Update="Data\20200817T182946\params.json">
	    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </None>
	</ItemGroup>
	
</Project>


Причем что крайне неприятно, под windows все работает, а под Linux после добавления пакетов вообще ничего.

Обошел установкой в качестве сервиса минимальной программы, и запуска программы обработчика через создание процесса. Но это какой то PHP way. Хотелось бы упаковать все в один файл и избавиться от вызова других процессов.
Не сталкивались с таким?
  • Вопрос задан
  • 250 просмотров
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
А если сделать publish - там файлы будут?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы