我有一些代码已经开始抛出异常:TooLongPathException。所以我做了一些研究,发现.net 4.6.2解决了这个问题。大!
失败的代码是将文件夹移动并复制到不同文件夹的代码。我想使用.net 4.6.2框架来使这段代码能够使用更长的路径,所以我不需要编写一些解决方法。
我在机器上安装了.net 4.6.2框架。该计算机运行Windows Server 2008 R2 SP1。我已经使项目目标4.6.2框架但仍然抛出此错误。
我不确定我在这里缺少什么。
有没有人使用过.net 4.6.2这个类似的东西可以指出我需要做什么?
答案 0 :(得分:0)
经过大量测试后,我可以确认这在Windows10上与.Net 4.6.2配合使用,但在Server 2012r2上失败。
当我想删除我在共享上使用Windows10创建的长文件夹时,服务器无法删除它。 我的解决方法是老式的Robocopy。
public static void DirectoryDeleteRobocopy(string a_strPath)
{
_log.Debug("DirectoryDeleteRobocopy called: " + a_strPath);
string strTmpDir = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
var emptyDirectory = new DirectoryInfo(strTmpDir + "\\TempEmptyDir_" + Guid.NewGuid());
try
{
emptyDirectory.Create();
using (var process = new Process())
{
process.StartInfo.FileName = "robocopy.exe";
process.StartInfo.Arguments = "\"" + emptyDirectory.FullName + "\" \"" + a_strPath + "\" /e /purge";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.WaitForExit();
}
emptyDirectory.Delete();
new DirectoryInfo(a_strPath).Attributes = FileAttributes.Normal;
Directory.Delete(a_strPath);
}
catch (IOException) { }
}
我认为微软应该尽快为Server 2012(甚至可能是2008年)提供“启用Win32长路径”策略。对不起,但是现在看起来很糟糕。