Мое приложение открывает файл XML в папке для десериализации его содержимого.Я освобождаю все, но devenv все еще держит ручку на содержащей папке.Проблема в том, что я открываю сторонние программы как дочерние процессы, и их выполнение не будет выполнено, так как они жалуются на невозможность удалить папку.
Это код, который я использую в своем приложении для открытия файла идесериализовать содержимое XML:
XmlConfig result = null;
XmlSerializer serializer = new XmlSerializer(typeof(XmlConfig));
using (FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (StreamReader sr = new StreamReader(fs))
{
result = (XmlConfig)serializer.Deserialize(sr);
}
}
return result;
Раньше я не использовал FileStream
, а только StreamReader
, но результат был таким же.
Ошибка возникает, если:
- Я запускаю сеанс отладки из Visual Studio
- Я запускаю приложение из выходной папки и подключаю отладчик перед запуском кода выше
- Я запускаюприложение из выходной папки и не присоединяйте отладчик, но ошибка произошла до
Ошибка не возникает, если:
- Я запускаю приложение изВыходная папка без подключения отладчика
- Я запускаю приложение из выходной папки и подключаю отладчик после выполнения кода выше
Я работаю VS Professional 2017 15.8.4.как администратор (поскольку приложение должно запускаться с правами администратора). Это проект WPF, .Net версии 4.6.
Все, что я смог найти в этой теме, - это невозможность сборки из-за блокировки Visual Studio некоторых DLLфайл в папке bin
или obj
.Это не соответствует моей проблеме.
Что здесь происходит и что важнее: как я могу решить эту проблему?
Редактировать:
Вот сообщение об ошибке, которое я получаю от моего дочернего процесса:
devenx.exe pid: 8612 type: file 1388: C:\lockedfolder
Я также проверил это с помощью Unlocker :