我在应用程序中使用SharpSvn库.作为自动集成测试的一部分,我创建了一个测试存储库,检查了一个工作副本,执行了一些测试,然后删除了存储库和工作副本文件夹.
但是,简单Directory.Delete(workingCopyPath, true);总是会产生一条UnauthorizedAccessException消息" 拒绝访问路径'条目'. " 我可以使用此代码重现错误:
using (var svnClient = new SvnClient())
{
svnClient.CheckOut(
new SvnUriTarget(new Uri(repositoryPath)), workingCopyPath);
}
Directory.Delete(workingCopyPath, true);
Run Code Online (Sandbox Code Playgroud)
如果我,这个错误仍然会发生
Thread.Sleep 尝试删除前几秒钟如果我使用资源管理器手动删除临时工作副本,我不会收到任何错误.
这里出了什么问题?以编程方式删除subversion工作副本的正确方法是什么?
原来Directory.Delete拒绝删除只读文件.
我现在使用此方法删除目录:
private void DeleteDirectory(string path)
{
var directory = new DirectoryInfo(path);
DisableReadOnly(directory);
directory.Delete(true);
}
private void DisableReadOnly(DirectoryInfo directory)
{
foreach (var file in directory.GetFiles())
{
if (file.IsReadOnly)
file.IsReadOnly = false;
}
foreach (var subdirectory in directory.GetDirectories())
{
DisableReadOnly(subdirectory);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1657 次 |
| 最近记录: |