【发布时间】:2017-07-03 15:03:58
【问题描述】:
我已将本地组策略编辑器中的Enable Win32 Long Paths 设置为Enabled 并重新启动计算机。
这是代码:
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
for (int i = 0; i < 10; i++)
path += "\\" + new string('z', 200);
Directory.CreateDirectory(path);
我收到了错误:
System.IO.DirectoryNotFoundException: '找不到一部分 路径 'C:\Users...\Desktop\zzzzzzzzzz...
(这实际上是一条奇怪的错误消息。)
app.config 已经有:
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
更多信息(可能不重要)
我尝试在configuration 下的app.config 中添加this post 和其他地方中提到的(尽管在cmets 中指出,使用.net 4.7 时不需要):
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
</runtime>
还是一样的错误。
如果我只使用一个zzzzzz...,它会在桌面上创建它而不会出错。
我使用的是 VS2017,Windows 10。我尝试过 Winforms 和 WPF。
【问题讨论】:
-
这不是 4.7 的错误 这是 Windows 中可用文件路径的限制。默认情况下,它硬编码为 260 个字符。
-
@eocron 没有将
UseLegacyPathHandling设置为 false。 -
您确实意识到 UseLegacyPathHandling 开关适用于根据链接文章低于 4.6.2 的应用程序,对吧?
-
@CamiloTerevinto 是的。
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />.
标签: c# .net wpf .net-4.6.2 .net-4.7