Как сохранить файлы с помощью Microsoft.Win32.SaveFileDialog с именами файлов длиннее, чем MAX_PATH? - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь сохранить файл:

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog
        {
            FileName = "verylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexampleverylongexample.foo",
            DefaultExt = ".foo",
            Filter = "Foo Bar|*.foo"
        };

После нажатия кнопки Сохранить в диалоговом окне я получаю следующее:

The filename, directory name, or volume label syntax is incorrect.

, даже если у меня есть это в моем app.manifest:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <windowsSettings xmlns:ws2="https://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <ws2:longPathAware>
          true
      </ws2:longPathAware>
</windowsSettings>

как указано здесь: https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#maximum-path-length-limitation

1 Ответ

0 голосов
/ 04 марта 2019

Так что да, парни, упомянутые в комментариях, означают, что ваша Windows не поддерживает это.

Начиная с Windows 10, версия 1607 , ограничения MAX_PATH были удаленыиз общих функций Win32 для работы с файлами и каталогами.

Теперь, чтобы сделать его совместимым с Windows, вам нужно будет создать пользовательский диалог для файлов, используя пути в стиле \\?\Drive:\.

...