Как включить поведение «Long Path Aware» через манифест в исполняемом файле C ++? - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь следовать документации Microsoft , чтобы снять MAX_PATH ограничение пути к файлу в API под Windows 10. Там написано:

Вы также можете включить новый длинныйповедение пути для приложения через манифест:

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

Итак, первый вопрос.Можно ли включить его в свойствах проекта в Visual Studio 2017?

Второй вопрос: мне не удалось найти ответ выше, поэтому я решил пойти ручным путем:

  1. Я создал текстовый файл additional.manifest следующим образом:

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
    <application xmlns="urn:schemas-microsoft-com:asm.v3">
        <windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
            <ws2:longPathAware>true</ws2:longPathAware>
        </windowsSettings>
    </application>
    </assembly>
    
  2. Затем я добавил его в свойства проекта:

enter image description here

Но потом, когда я его скомпилировал, он выдает мне это предупреждение, и этот манифест, похоже, не действует при запуске приложения:

1> extra.manifest: предупреждение об авторизации манифеста81010002: нераспознанный элемент "longPathAware" в пространстве имен "http://schemas.microsoft.com/SMI/2016/WindowsSettings".

Так что я делаю не так?

1 Ответ

0 голосов
/ 25 декабря 2018

Нет.В свойствах проекта Visual Studio 2017 v15.9.4 для настольных или консольных приложений Windows нет переключателя для включения «Long Path Aware».

В приведенной выше документации Microsoft указано следующее:

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

Убедитесь, что вы нацелены на Windows SDK для Windows 10, версия 1607 или выше для используемой конфигурации и текущего набора инструментов.Вам нужен как минимум Windows SDK v10.0.14393.795.Текущая версия v10.0.17763.0.

Вы можете найти и изменить целевую версию Windows SDK и целевой набор инструментов на странице свойств «Общие» свойств проекта.

Примечание:Сделайте общие изменения конфигурации активными во всех конфигурациях.Измените параметры конфигурации листа свойств на «Все конфигурации» и «Все платформы», за исключением того, что вы вносите изменения специально для платформы.

...