Начиная с Windows 10 (или Windows Server 2016) и .Net 4.6.2, длинные пути могут поддерживаться напрямую, если параметр реестра включен, а ваше приложение помечено как «поддерживающее длинные пути».
Доступ к настройке можно получить через редактор локальной групповой политики (gpedit.msc
), в разделе Конфигурация компьютера > Административные шаблоны > Все настройки > Включить длинные пути Win32
Чтобы пометить ваше приложение как «поддерживающее длинный путь», добавьте этот раздел в файл манифеста:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
Кроме того, если ваше приложение предназначено для версии .Net framework ранее, чем 4.6.2 , вам необходимо добавить раздел в файл App.config:
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
</runtime>
</configuration>
Для получения дополнительной информации см .:
https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/
https://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx
(Насколько мне известно, это влияет только на базовые API-интерфейсы файловой системы Windows. Не-файловые API-интерфейсы могут по-прежнему ограничиваться 260 символами)