269 votes

L'opération demandée ne peut pas être effectuée sur un fichier avec une section ouverte par l'utilisateur.

Lorsque j'ai essayé de copier 4 fichiers dans mon dossier bin, après avoir arrêté le service principal, j'ai eu une erreur avec un fichier (TexteDll). L'erreur est la suivante :

Cannot copy TexteDll: The requested operation cannot be performed on a file 
with a user-mapped section open

Cela peut être dû à un verrouillage du système. Ou peut-être qu'un autre processus utilise cette DLL. En cherchant sur Google, j'ai trouvé que le redémarrage du système pouvait résoudre ce problème.

Quelqu'un peut-il suggérer une cause ou une solution à ce problème ? J'ai inspecté les propriétés de TexteDll (général, version, sécurité, etc.). Tout semble normal.

2 votes

14 votes

Il y a en fait beaucoup plus de "doublons" de la question (par exemple : stackoverflow.com/questions/1818076/ ) - le problème est qu'à chaque fois, la cause profonde est quelque chose de différent.

9 votes

La prochaine fois, essayez d'utiliser "Process Explorer" sur le site de Microsoft. Il dispose d'une fonction appelée "find handle". Recherchez votre fichier dans cet outil et il vous montrera quel processus a un handle sur ce fichier. Vous pouvez alors commencer à chercher pourquoi ce programme a cet accès. BTW, l'arrêt d'un service ne signifie pas nécessairement que l'exécutable qui héberge le service s'arrête. Un exécutable peut héberger plusieurs services. Dans le pire des cas, de nombreux services .net qui utilisent d'énormes quantités de mémoire ont tendance à se terminer après avoir libéré cette mémoire, ce qui se produit parfois quelques minutes après l'événement d'arrêt du service.

196voto

user2158153 Points 768

Dans mon cas, c'est l'Explorer qui verrouillait la DLL qui avait été compilée dans le dossier Debug... Étrange, n'est-ce pas ?

Je l'ai découvert en utilisant un outil appelé Unlocker.

J'ai dû supprimer avec Unlocker, même s'il disait qu'il n'y avait pas de verrou sur le fichier, et je ne pouvais pas supprimer le dossier tant que je n'avais pas supprimé ce seul fichier...

Après cela, il a compilé.

EDIT :

J'ai découvert pourquoi dans mon cas cela se produisait. J'avais la DLL ouverte dans un éditeur de texte dans Visual Studio...

36 votes

J'avais le dlo ouvert dans une de mes nombreuses fenêtres de visual studio ouvertes aussi. Merci d'avoir posté cette mise à jour.

3 votes

Même chose, d'une manière ou d'une autre, la fichue DLL était ouverte dans une fenêtre de texte de l'éditeur.

6 votes

Divulgation complète : le lien vers "Unlocker" est un logiciel espion. Il installe toutes sortes de barres d'outils et autres conneries, même si vous décochez toutes les cases indiquant que vous n'en voulez pas.

79voto

Arman McHitaryan Points 847
  • Parfois, lorsque vous double-cliquez sur un avertissement concernant la non-concordance de la version de l'assemblage référencé version de l'assemblage référencé entre deux ou plusieurs projets, vous oubliez de fermer la fenêtre de vue de l'assemblage et elle reste là parmi d'autres onglets... donc vous vous retrouvez avec l'assemblage verrouillé par VS lui-même. lui-même et cela m'a pris pas mal de temps pour comprendre cela :)

    Soyez prudent avec la puissance que VS fournit ;)

  • Un autre scénario fictif. Parfois, le fait de supprimer tout le dossier obj ou juste le fichier signalé comme étant verrouillé peut aider à résoudre ce problème. erreur de merde.

2 votes

A réglé le problème pour moi... J'ai même fait un redémarrage du système mais VS a rouvert la fenêtre de vue d'ensemble. Fermer tous les onglets a fait le travail. Merci

0 votes

Incroyable, merci pour ça. J'étais totalement choqué que ce soit parce que j'avais un des fichiers ouvert comme un onglet dans VS !

42voto

cihata87 Points 515

Fermez tous les documents sur VS et essayez de reconstruire à nouveau. Si cela ne fonctionne pas, redémarrez VS. Ce problème est lié au verrouillage des fichiers DLL.

3 votes

Pareil, quelques bizarreries avec VS. le redémarrage l'a résolu pour moi.

1 votes

Ça a marché pour moi. Une chose étrange dans ma situation particulière. J'avais exécuté mon exe de manière autonome, en dehors de l'environnement VS. Je l'ai laissé tourner toute la nuit (test de mémoire - il a réussi), je l'ai arrêté le matin, j'ai fait quelques petits changements de code, et soudainement je n'ai pas pu terminer ma construction à cause de cela. Bizarre que cette mémoire semble entrer en conflit comme ça.

0 votes

Nasty, merci, un document ouvert causait l'erreur, quelle connerie !

15voto

user2038221 Points 21

Fermez visual studio, supprimez bin , debug release folder, et relancez le projet visual studio. cela a réglé mon problème

11voto

bozydar.sz Points 109

J'ai eu le même problème et dans mon cas, il est apparu que le fichier de sortie existant était verrouillé par une autre application.

Vous pouvez vérifier quelle application verrouille votre fichier de sortie avec OpenedFilesView : http://www.nirsoft.net/utils/opened_files_view.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X