Задать вопрос
@roqin
Трепыхаюсь потихоньку

Непонятные проблемы с удалением в корзину в C# под Linux?

(Вожусь с Си# под Линукс, сугубо любительски.)

Решил попробовать удалять файлы не совсем, а с перемещением их в корзину. Сразу нашёл способ с использованием чего-то там из вузуал бейсика, но в Си#:
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?
  • Вопрос задан
  • 126 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
System.PlatformNotSupportedException: UI not available for copy or move


По моему все доходчиво. Платформа не поддерживает данный метод.
Выходов несколько.
Первый спросить систему кто она и выполнять банальное File.Move для линукса
либо ловить эксепшен и делать то же самое в обработчике
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы