【发布时间】:2019-06-20 17:24:25
【问题描述】:
我在复制文件时遇到问题,如果目标目录中存在文件,则覆盖它,否则什么也不做。但我收到此错误消息:
mscorlib.dll 中出现“System.IO.IOException”类型的未处理异常 进程无法访问文件 [PATH]/TaskRepository.cs 因为它正在被另一个进程使用。我什至几个小时都没有找到解决方案。在 stackoverflow 上寻找其他主题,但无法弄清楚。我的代码在这里
public void EditFiles(List<string> OriginalFiles, List<string> TargetFiles)
{
foreach (var original in OriginalFiles)
{
int i = 0;
int index = original.LastIndexOf(@"\");
if (original.Substring(index).Contains("TaskRepository.cs"))
{
while (i < TargetFiles.Count)
{
if (TargetFiles[i].Contains("TaskRepository.cs") == true)
{
File.Copy(original, TargetFiles[i], true);
}
i++;
}
}
}
}
【问题讨论】:
-
问题不在您的代码中(至少不在您提供的代码中)。如果您确实确定问题出在 C# 端,请阅读错误消息并重新考虑或提供其他代码。
-
您可以使用 Process Explorer (docs.microsoft.com/en-us/sysinternals/downloads/…) 并在那里找到锁定您文件的程序。 (Ctrl + F 并粘贴文件名)
-
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\mscorlib.dll 其中 2 两个。 @OndřejKubíček
-
mscorlib.dll 是库。它本身不能锁定任何文件,因为它不能作为进程运行(通常只有 .exe 文件可以)所以它应该是一个不同的进程来锁定你的文件。
-
嘿,我发现,explorer.exe 正在锁定我的文件。什么会导致这个问题? @OndřejKubíček
标签: c# overwrite file-copying