【问题标题】:(File.Copy) Unhandled 'System.IO.IOException' in mscorlib.dll(File.Copy) mscorlib.dll 中未处理的“System.IO.IOException”
【发布时间】: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


【解决方案1】:

您的文件似乎没有被复制到目录中我猜您的目标路径太长而无法被发现

【讨论】:

    【解决方案2】:

    您是否在同一目录中使用文件复制,请检查此...或者还有另一种称为 copyto 的方法,您也可以使用该方法

    FileInfo fi = new FileInfo(@"c:\onefile.txt");
    fi.CopyTo(@"d:\anotherfile.txt", true); // existing file will be overwritten
    

    【讨论】:

    • 您好,谢谢您的回答。我正在尝试从 C:\\Users\\omerc\\Downloads\\Dosyalar\\Dosyalar\\COMED_EMR\\Modules\\Medical\\aaa.Modules.Medical\\Repositories\\Workflow\\TaskRepository.cs 复制到“C:\\Users\\omerc\\Documents\\COMED_EMR\\Modules\\Pusula\\CoMed.EMR.Modules.Pusula\\Repositories\\Workflow\\TaskRepository.cs”这里。我使用了 CopyTo 方法,但没有任何改变@agsk
    【解决方案3】:

    我会尝试将您要使用的文件复制到单独的文件夹中。 Visual Studio 很可能是罪魁祸首,但它也可能是锁定文件的任何东西。

    Visual Studio locking files while debugging

    【讨论】:

    • 感谢您的回答,但已启用编辑并继续
    • @ÖmerÇiftci - 根据答案编辑并继续在调试时锁定解决方案中的所有文件。
    • 你太棒了 :) 提前谢谢你,你把我从这种痴迷中解救了出来:D 它有效,我已经解决这个问题好几个小时了。
    • @ÖmerÇiftci - 请记住,您这样做的次数越多,您就越会觉得自己很愚蠢,所以继续前进,直到您弄明白为止。
    • 我会继续前进,永不放弃,再次感谢您:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多