1
votes

(File.Copy) 'System.IO.IOException' non gérée dans mscorlib.dll

J'ai un problème avec la copie de fichiers, si le fichier existe dans le répertoire cible, écrasez-le, sinon ne faites rien. Mais j'obtiens ce message d'erreur:

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++;
            }
        }                
    }
}

Je n'ai même pas trouvé de solution depuis des heures. J'ai recherché d'autres sujets sur stackoverflow mais je n'ai pas pu comprendre. Mon code est ici

An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll
The process cannot access the file [PATH]/TaskRepository.cs 
because it is being used by another process.  


8 commentaires

Le problème n'est pas dans votre code (du moins pas dans le code que vous avez fourni). Lisez simplement le message d'erreur et réfléchissez à nouveau ou fournissez un autre code si vous êtes vraiment sûr qu'un problème est du côté C #.


Vous pouvez utiliser Process Explorer ( docs.microsoft.com/en-us/ sysinternals / downloads /… ) et trouvez-y le programme qui a verrouillé votre fichier. (Ctrl + F et collez le nom de votre fichier)


C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.2 \ mscorlib‌ .dll il y en a deux. @ OndřejKubíček


mscorlib.dll est une bibliothèque. Il ne peut verrouiller lui-même aucun fichier car il ne peut pas être exécuté en tant que processus (en commun, seuls les fichiers .exe le peuvent), il devrait donc s'agir d'un processus différent qui verrouille votre fichier.


Hé, j'ai trouvé, explorer.exe verrouille mon fichier. Qu'est-ce qui peut causer ce problème? @ OndřejKubíček


explorer.exe est l'Explorateur Windows. Je sais qu'il peut verrouiller les dossiers qu'il explore. Mais c'est bizarre de verrouiller les fichiers. Essayez peut-être de fermer toutes les fenêtres de l'Explorateur Windows, puis réessayez.


Mon faux, en fait, il semble myprojectname.exe verrouiller mon fichier, mon erreur. Mais comment résoudre ce problème? Pourquoi verrouille-t-il le fichier? As-tu une idée? @ OndřejKubíček


@ ÖmerÇiftci - Jetez un œil à ma réponse.


3 Réponses :


0
votes

J'essaierais de copier les fichiers avec lesquels vous souhaitez travailler dans un dossier séparé. Visual Studio est probablement le coupable, mais il peut s'agir de tout ce qui verrouille les fichiers.

Verrouillage des fichiers Visual Studio lors du débogage


5 commentaires

Merci pour la réponse, mais elle est déjà activée modifier et continuer


@ ÖmerÇiftci - Selon la réponse, Edit And Continue verrouille tous les fichiers de la solution lors du débogage.


Tu es génial :) Merci d'avance, tu m'as sauvé de cette obsession: D ça marche, je résous ce problème depuis des heures.


@ ÖmerÇiftci - Rappelez-vous simplement que plus vous faites cela, plus vous vous sentirez stupide, alors continuez jusqu'à ce que vous le compreniez.


Je continuerai et je n'abandonnerai jamais, merci encore :)



0
votes

Utilisez-vous la copie de fichier dans le même répertoire, veuillez vérifier ceci ... ou il existe une autre méthode appelée copyto que vous pouvez également utiliser

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


1 commentaires

Salut, merci pour ta réponse. J'essaie de copier depuis C: \\ Users \\ omerc \\ Downloads \\ Dosyalar \\ Dosyalar \\ COMED_EMR \\ ‌ Modules \\ Medical \\ aa‌ a.Modules.Medical \\ R‌ epositories \\ Workflo‌ w \\ TaskRepository.cs vers "C: \\ Users \\ omerc \\ Documents \\ COMED_EMR \\ Modules \\ Pusula \\ Co‌ Med.EMR.Modules.Pusu‌ la \\ Repositories \\ Wo‌ rkflow \\ TaskReposito‌ ry.cs "ici. J'ai utilisé la méthode CopyTo mais rien n'a changé @agsk



0
votes

Il semble que votre fichier n’a pas été copié dans le répertoire. Je suppose que votre chemin cible est trop long pour être découvert


0 commentaires