49 votes

Débogage VisualStudio2010 - Le processus ne peut pas accéder au fichier ... car il est utilisé par un autre processus

Je ne parviens pas à déboguer une application WinForms C# en utilisant la version publiée de Visual Studio 2010 Prof.

J'obtiens le message d'erreur suivant après la deuxième exécution du débogage.

Erreur 9 Impossible de copier le fichier "obj \x86\Debug\Arrowgrass Reports.exe" à "bin \Debug\Arrowgrass Reports.exe". Le processus ne peut pas accéder au fichier 'bin \Debug\Arrowgrass Reports.exe" parce qu'il est utilisé par un autre processus.

J'ai essayé un script pré-build pour tenter de supprimer ce fichier, mais il est verrouillé par Visual Studio.

Il y a quelques références à cela sur le net, donc c'est un problème connu. Quelqu'un a-t-il un correctif ou une solution de contournement efficace ?

29voto

DocKell Points 301

J'ai trouvé ce problème très facile à reproduire, et la solution pour moi est une variation de la réponse de Richard Fors. Si j'ai un UserControl ouvert dans le concepteur, que j'exécute le débogueur, puis que je modifie le UserControl, la reconstruction ultérieure échouera. Si je ferme le UserControl avant d'exécuter le débogueur, je n'obtiens jamais cette erreur. Je m'assure donc de fermer la fenêtre du concepteur avant d'appuyer sur F5.

27voto

Alex. S. Points 16684

En octobre 2012, j'ai toujours ce problème, donc le SP1 de VS 2010 n'a pas résolu le problème. Ce que j'ai fait, et qui a fonctionné de manière cohérente, a été de désactiver le processus d'hébergement dans les projets.

Pour désactiver le processus d'hébergement :

.  Open a project in Visual Studio.

.  On the Project menu, click Properties.

.  Click the Debug tab.

.  Clear the Enable the Visual Studio hosting process check box.

Source : http://msdn.microsoft.com/en-us/library/ms185330(v=vs.100).aspx

4 votes

C'est la solution que j'ai le moins aimé dans cette liste, et pourtant c'est la seule qui a fonctionné pour moi. Je dois noter qu'après avoir effectué la modification, le processus d'hébergement qui était bloqué n'a pas été automatiquement arrêté. J'ai dû redémarrer Visual Studio une fois de plus pour que cela fonctionne.

0 votes

Pourtant, ça n'a pas marché pour moi. J'ai redémarré le vs aussi.

0 votes

Cela a marché pour moi, rien d'autre n'a marché et j'ai essayé tout ce que j'ai pu trouver.

21voto

0xA3 Points 73439

Vous pouvez essayer de tuer le processus vshost.exe :

taskkill /F /IM "Arrowgrass Reports.vshosts.exe"

Vous pourriez aussi avoir de la chance et simplement être en mesure de déplacer le fichier en question. Le déplacement du fichier peut être effectué en ajoutant les lignes de code suivantes à l'événement de pré-construction de votre projet :

if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"

0 votes

Le lien n'essaie pas de déchiffrer la cause du problème et donc le fait que ça marche ou pas. Dans mon cas, ce n'est pas le cas.

2 votes

@Tomas Pajonk : La cause du problème est très probablement le fait indiqué par le message d'erreur ; votre cible est utilisée par un autre processus. Pour savoir quel processus, vous pouvez utiliser Process Explorer de Sysinternal ; appuyez sur Ctrl+F et recherchez "Arrowgrass Reports.exe".

3 votes

Au cas où quelqu'un serait encore intéressé par cette question, j'ai remarqué que le problème ne se produit que lorsque des contrôles définis par l'utilisateur sont utilisés. Il semble que Visual Studio lui-même soit l'autre processus, puisqu'il effectue le rendu du contrôle. J'ai constaté que tant que ce contrôle n'était pas à l'écran, je n'obtenais pas l'erreur.

4voto

Joe C Points 41

La désactivation de la recherche Windows n'a rien arrangé pour moi. En revanche, la désactivation de l'antivirus l'a fait (notre antivirus est Symantec Endpoint Protection 11).

J'ai pu résoudre ce problème en modifiant les paramètres de débogage du projet afin de faire pointer le dossier de travail vers un chemin sur le lecteur C :, puis en excluant ce chemin des paramètres d'analyse de la protection automatique de l'antivirus.

J'espère que cela aidera quelqu'un.

4voto

Tom Studee Points 4346

J'ai posté cette réponse dans une question similaire mais je me suis dit que je devais aussi la dire ici :

D'accord... ça peut sembler assez fou.

J'ai ce problème dans VS2010 depuis deux ans. La solution de contournement mentionnée ici fonctionne pour moi, mais j'ai souvent oublié de fermer d'abord tous mes formulaires/contrôles d'utilisateur.

J'ai découvert que le simple fait d'aller voir les fichiers ouverts via :

Computer Management (compmgmt.msc)->Shared Folders->Open Files

va "libérer" le fichier verrouillé. Très étrange, mais ça marche pour moi !

0 votes

C'est bizarre... J'ai réussi à reproduire et ça marche... pour l'instant... :-)

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