除了我的软件之外,我需要删除软件本地路径中的所有文件
我的剧本:
string a = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
Array.ForEach(Directory.GetFiles(a), File.Delete);
错误:
“System.UnauthorizedAccessException”类型的未处理异常 发生在mscorlib.dll
其他信息:L'accèsauchemin d'accès 'D:\ FWeb \ AutoUpdate \ AutoUpdate \ bin \ Debug \AutoUpdate.exe'estrefusé。
答案 0 :(得分:2)
您尝试删除正在使用的文件 - 很可能是当前进程的可执行文件。您可以跳过此特定文件,但请注意,如果它加载任何库(.dll文件),它们也可能被锁定。其他文件也可能正在使用中(例如.pdb文件,资源等),因此请确保排除此类内容。
var assemblyPath = Assembly.GetEntryAssembly().Location;
var pathsToExclude = new[] { assemblyPath };
string a = System.IO.Path.GetDirectoryName(assemblyPath);
foreach (var file in Directory.EnumerateFiles(a).Except(pathsToExclude))
File.Delete(file);
答案 1 :(得分:0)
您只需要过滤掉自己的程序集。当然,您无法删除当前正在运行的二进制文件,因此请将其从列表中删除:
font-weight: bolder
为避免出现区分大小写问题,您可以考虑
string location = Assembly.GetEntryAssembly().Location;
string a = System.IO.Path.GetDirectoryName(location);
string[] files = Directory.GetFiles(a).Where(f => f != location).ToArray();
Array.ForEach(files, File.Delete);
代替。