我已在本地组策略编辑器中设置了启用 Win32 长路径
为已启用
,并重新启动计算机。
下面是代码:
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" />
更多信息(可能不太重要)
我尝试按照此文章和其他地方的说明(虽然评论中指出在使用 .net 4.7 时不需要),将configuration
标签下的内容添加到 app.config 中:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
</runtime>
依然是同样的错误。
如果我仅使用一个zzzzzz...
,则会在桌面上创建它而没有错误。
我正在使用VS2017,Windows 10。 我尝试过Winforms和WPF。
UseLegacyPathHandling
设置为 false 时,与 @eocron 无关。 - NtFreXDirectoryInfo
来创建目录。仍然不行。 - ispiro