Я пишу программу, которая должна читать файлы из любой точки системы. Некоторые пользователи программы имеют пути свыше 260 символов. OpenFileDialog
не работает с файлами с путями длиной более 260 символов.
Я пробовал использовать как System.Windows.Forms.OpenFileDialog
, так и Microsoft.Win32.OpenFileDialog
. В первом случае, когда я нажимаю «открыть» после перехода к файлу и его выбора, окно не закрывается и программа не продолжается. В последнем случае окно закроется, когда я нажму «открыть», но путь будет пустой строкой.
Я обновил реестр на моем компьютере. Я отредактировал файл манифеста приложения. Я попытался бы добавить строку "//? /" К моим путям, но нет никаких путей к ним.
var dialog = new OpenFileDialog
{
// initialize dialog
}
if (dialog.ShowDialog() == DialogResult.OK) // DialogResult.OK replaced with true if using Microsoft.Win32.OpenFileDialog
{
// if when using System.Windows.Forms.OpenFileDialog, I will never get to this point
// if using Microsoft.Win32.OpenFileDialog, I will get here but dialog.FileNames will be empty
}
Я ожидал бы, что приведенный выше код будет работать так же с long икороткие пути, если я обновил реестр и манифест приложения. Я подозреваю, что это просто не поддерживается, но все мои поиски показали, что люди предоставляют решение, которое либо не работает, либо работает только в определенных случаях.