我正在尝试找到一种解决 Windows 字符限制的方法,该限制不允许复制文件名 >= 260 个字符的文件。根据这篇 MSDN 文章, if \\?\
附加在文件名前面,这将绕过文件名长度限制。
我尝试过这个测试:
string source = "\\\\?\\C:\\Users\\xxxx\\Documents\\Visual Studio 2013\\Projects\\PDFConverterTester\\PDFConverterTester_BatchGUI\\bin\\Debug\\folder1\\a.txt";
string dest= "\\\\?\\C:\\Users\\xxxx\\Documents\\Visual Studio 2013\\Projects\\PDFConverterTester\\PDFConverterTester_BatchGUI\\bin\\Debug\\folder2\\a.txt";
System.IO.File.Copy(source, dest);
但这引发了一个例外:
Illegal characters in path.
我应该以不同的方式应用这个前缀吗?
编辑:我公司的 IT 政策不允许我在没有经过漫长的审核过程的情况下安装任何新软件,这意味着我无法更新到 4.6.2。所以我试图弄清楚如何通过现有的 Visual Studio .NET 4.5 安装中的 Windows API 调用来解决此问题。
要启用长路径支持,您需要以 .Net Framework 4.6.2(或更高版本)为目标,或者需要告诉您的应用程序它可以支持长文件名。为此,请将其添加到您的 app.config 中:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
</runtime>
可以进一步阅读here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)