2010-11-04 4 views
1

Je travaille sur une application gui écrite en C# en utilisant Visual Studio et je suis en train de tomber sur un bug vraiment ennuyeux où lorsque je fais des changements à l'application, il débogue correctement la première fois que j'essaie de Déboguez-le, mais lorsque j'essaie de déboguer à nouveau l'application, j'obtiens une erreur indiquant qu'il ne peut pas copier un fichier exe du répertoire obj vers le répertoire bin.visual studio C# verrouillage fichier .exe

Le redémarrage de Visual Studio corrige ce problème.

Il est vraiment ennuyeux de devoir redémarrer tout le temps. Il semble y avoir un certain nombre de messages en ligne à ce sujet, mais personne ne semble avoir trouvé la solution. Quelqu'un at-il pu résoudre ce problème?

+0

Je n'ai vu cela que lorsque j'ai exécuté le fichier EXE généré dans une machine virtuelle VMWare. Est-ce votre cas? –

+0

no. Je cours normalement Windows 7. –

+1

L'exe est-il toujours en cours d'exécution (consultez le Gestionnaire des tâches)? –

Répondre

0

est-ce un service? vous devrez peut-être installer -util avant la recompilation

+0

Non, c'est juste une application GUI normale –

4

essayez VSCommands 2010 extension. Lorsque vous obtenez à nouveau l'erreur, cliquez sur le message dans la liste des erreurs et cliquez sur "Appliquer le correctif" dans le menu contextuel. Cela vous indiquera quel processus se trouve sur le fichier et vous permettra de le terminer. À plus long terme, il se peut que vous ayez un thread d'arrière-plan en cours d'exécution qui ne se termine pas à la fin de l'application.

+0

J'ai utilisé l'explorateur de processus pour voir cela et c'est VS qui a verrouillé le fichier (sans surprise). Le thread d'arrière-plan est à travers un backgroundWorker ajouté à la forme que l'interface graphique utilise, donc je ne sais pas comment il pourrait être échouer un thread lorsque l'application se termine. –

1

J'ai le même problème. J'ai trouvé dans un autre thread (ne me souviens pas qui) que pour une raison insondable, vous pouvez changer la version de montage déclarée dans vos fichiers AssemblyInfo.cs de

AssemblyVersion("1.0.*") 

dans

AssemblyVersion("1.0.0.0") 

Ou un autre version explicite, et le problème disparaît. CA marchait bien pour moi. Cependant, je voudrais une solution qui me permettrait d'utiliser la version générique. Ou une explication de la raison pour laquelle la version d'assembly provoque le verrouillage du fichier.

0

Dans mon cas c'était le logiciel antivirus Avira antivir. Lorsque j'ai ajouté les dossiers de publication dans les exceptions, le problème a disparu. Avira prend généralement beaucoup de temps pour scanner les documents en arrière-plan, en verrouillant apparemment les fichiers exe avant qu'ils puissent être écrasés. Après l'analyse, le fichier est déverrouillé. Lorsque mon cycle de développement/test est inférieur à 30 secondes (ce qui est souvent le cas), il déclenchera cette erreur après avoir réessayé 10 fois.

Questions connexes