(Вожусь с Си# под Линукс, сугубо любительски.)
Решил попробовать удалять файлы не совсем, а с перемещением их в корзину. Сразу нашёл способ с использованием чего-то там из вузуал бейсика, но в Си#:
using Microsoft.VisualBasic.FileIO;
namespace test;
public class Program
{
public static void Main()
{
FileSystem.DeleteFile("test.txt", UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);
}
}
Естественно этот "test.txt" существует и права на модификацию данной директории у меня тоже есть. Но при попытке запустить под иксами в эмуляторе терминала вылазит такое сообщение:
Unhandled exception. System.PlatformNotSupportedException: UI not available for copy or move
at Microsoft.VisualBasic.FileIO.FileSystem.ShellDelete(String FullPath, UIOptionInternal ShowUI, RecycleOption recycle, UICancelOption OnUserCancel, FileOrDirectory FileOrDirectory)
at Microsoft.VisualBasic.FileIO.FileSystem.DeleteFileInternal(String file, UIOptionInternal showUI, RecycleOption recycle, UICancelOption onUserCancel)
at Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(String file, UIOption showUI, RecycleOption recycle)
at test.Program.Main() in /home/roqin/tmp/asffds/Program.cs:line 9
Хотя при запуске этого же файла (даже не перекомпилированного) в эмуляторе под виндовс всё проходит нормально и файл отправляется в корзину, как и положено. Версии dotnet одинаковые (6.0.405), только одна под Linux x64, а другая Windows x32. Хотя корзина у меня работает: с dolphin (да и nautilus), double commander, far, программы под wine тоже перемещают удалённые файлы в линуксячью корзину и т.п. (как это сделать в mc я до конца не разобрался -
LD_LIBRARY=libtrash.so.3 mc
, но это уже совсем другой вопрос).
Я вот теперь думаю: это я просто чего-то не доделал или обнаружил ошибку в dotnet для Linux?