J'ai une webforms
application C # qui jusqu'à aujourd'hui fonctionnait à merveille.
Aujourd'hui, tout d'un coup, chaque fois que j'essaye d'exécuter l'application, j'obtiens une erreur de verrouillage de fichier:
Impossible de copier le fichier "obj \ Debug \ MyProject.exe" vers "bin \ Debug \ MyProject.exe". Le processus ne peut pas accéder au fichier "bin \ Debug \ MyProject.exe" car il est utilisé par un autre processus.
Googler l'erreur ne donne rien au-delà de l'évidence, c'est-à-dire que VS pense que le fichier est verrouillé. Et c'est définitivement Visual Studio lui-même qui verrouille le fichier, car lorsque je ferme VS et que je le rouvre, le projet s'exécute correctement - la première fois. Lorsque j'essaye de l'exécuter une deuxième fois, j'obtiens l'erreur de verrouillage de fichier.
Fermer VS et rouvrir chaque fois que je veux exécuter l'application n'est pas une solution de contournement viable! Comment savoir ce qui verrouille le fichier et l'empêcher de se verrouiller?
EDIT: Une autre découverte intéressante: je n'ai même pas besoin d'exécuter l'application. Le simple fait de le compiler une fois provoque le verrouillage du fichier; Je ne peux pas compiler deux fois de suite!
Ce problème est spécifique à un projet de ma solution. Tous les autres projets fonctionnent bien et peuvent être exécutés autant de fois que je le souhaite. Ce n'est que ce seul projet qui se verrouille.
la source
Réponses:
J'ai trouvé une solution simple qui fonctionne pour moi. Ça va comme ça:
Lorsque le problème survient, changez simplement la configuration du bâtiment en haut (si dans «Release» en «Debug» et vice versa), compilez puis revenez à la configuration précédente et compilez à nouveau.
Je suppose que changer la configuration libère vcshost et devenv.
la source
Eh bien, j'ai résolu le problème moi-même - même si je ne sais toujours pas pourquoi. J'ai décidé d'isoler le problème en supprimant tous les fichiers du projet, puis en les rajoutant et en déterminant de cette façon quel fichier était la source de mon problème. Donc, un par un, j'ai réintroduit des fichiers dans le projet, compilé et nettoyé chaque étape du processus ... jusqu'à ce que ... j'ai ajouté le dernier ...
... et tout fonctionnait toujours bien.
J'ai fait une comparaison avec le contrôle de source de mon .csproj original; pas de vraies différences. Et même lorsque j'ai essayé de revenir à la version précédente du .csproj, cela fonctionnait toujours.
Magie noire. Si cela fonctionne, il vaut parfois mieux ne pas demander pourquoi - acceptez-le et continuez ...
EDIT: Le problème est récurrent, et je crois que je l'ai isolé lorsque j'ai le concepteur de formulaire ouvert d'un formulaire abstrait / générique au moment de la compilation.
Leçon apprise: assurez-vous que le Concepteur de formulaires de tous les formulaires ou contrôles abstraits ou génériques est fermé avant la compilation! Sinon, vous devez fermer VS et rouvrir!
la source
Ce que nous avons découvert ici, est le suivant: Dans la page de propriétés du projet, onglet Déboguer, décochez la case "Activer le processus d'hébergement de Visual Studio". Je ne sais pas à quoi sert cette propriété, mais elle fait le travail une fois décochée.
la source
En fait, vous devriez vouloir "Activer le processus d'hébergement Visual Studio" coché. Au moins pour VS2010 de toute façon. Et j'ai aussi:
s'il existe "$ (TargetPath) .locked" del "$ (TargetPath) .locked" s'il existe "$ (TargetPath)" s'il n'existe pas "$ (TargetPath) .locked" move "$ (TargetPath)" "$ (TargetPath) .fermé à clé"
dans les options de pré-construction. Ce problème me préoccupe depuis très longtemps et ce n'est que lorsque John W. a mentionné cette case à cocher que j'ai même remarqué qu'elle existait et qu'elle était faible et que c'était déjà décochée.
Notez également que -app-vshost.exe s'exécute en arrière-plan même lorsqu'il n'est pas en cours de débogage. C'est ce qui fait qu'il est construit et exécuté avec succès à chaque fois, je suppose. Il ne fonctionnait pas avant. Et j'ai également essayé de nettoyer les dossiers de débogage et de publication et de changer constamment le type de cible et rien ne fonctionnait sauf comme décrit ci-dessus. Ma solution avant était d'attendre 5 minutes entre les builds, ce qui devenait super ennuyeux et long pour faire quoi que ce soit. Je n'ai vu aucun changement de comportement où il importait quels onglets étaient ouverts ou XNA vs Windows ou les concepteurs ouverts. Ce problème se produisait dans les versions 32 bits ou 64 bits et n'avait pas d'importance si je tuais une application avec ALT-F4 ou si je la tuais avec le gestionnaire de tâches, ce qui, en théorie, ne permettrait pas à l'application de fermer ou de libérer des ressources. Au début, je pensais que c'était un problème de ramassage des ordures.
la source
VS2017 - Résolu en fermant toutes les instances de MSBuild.exe dans le gestionnaire de tâches Windows
la source
Un peu tard pour répondre, mais je résous ce problème en allant dans les propriétés du projet> onglet "Déboguer"> décochez "Activer le processus d'hébergement de Visual Studio".
la source
J'ai surmonté ce problème en renommant le fichier verrouillé (à l'aide de l'Explorateur Windows). Je n'ai pas été autorisé à supprimer le fichier, mais renommer le fichier verrouillé fonctionne!
la source
J'ai résolu cela en supprimant le dossier bin \ Debug et, éventuellement, en redémarrant VS
la source
Pour moi, c'était un service Windows qui était installé et en cours d'exécution. Une fois que je l'ai arrêté, la construction a réussi.
la source
Exécutez cette commande à partir de la zone Exécuter:
puis
travaillé pour moi. vs 2003
la source
Récemment rencontré ce problème lors de la tentative de création d'une solution sur laquelle je travaille (pas seulement un projet winforms).
En plus de l'
build
échec, j'ai remarqué que les projets de nettoyage échouaient silencieusement (la vérification du dossier bin montrait que les fichiers n'avaient pas été réellement effacés) et la fermeture de Visual Studio ne mettait pas fin audevenv
processus - au contraire, cela provoquait son blocage. Le processus de récupération de Windows redémarrerait alors Visual Studio.Après quelques essais et erreurs, j'ai trouvé que les problèmes ne m'arrivaient que lorsque j'ai ouvert la solution à partir du menu "Récent" au démarrage de VS.
En ouvrant la solution,
File >> Open >> Project/Solution
elle fonctionne normalement.Actuellement, je ne sais pas pourquoi - je vais continuer à chercher cela, mais pour l'instant, au moins je peux travailler!
la source
Vérifiez simplement les références et supprimez l'auto-référence au projet.
Explication: Mon problème a commencé après la création d'un contrôle personnalisé et le glisser-déposer dans la palette de la boîte à outils pour l'utiliser dans les formulaires de conception. Un avertissement est d'abord apparu indiquant qu'il y avait une redondance entre le fichier source de contrôle personnalisé (.cs) et l'exécutable du projet (.exe). Lors de l'exécution / débogage est apparu l'erreur: impossible d'accéder au (.exe) car il est utilisé (et c'était vrai).
J'ai littéralement supprimé tout le code source concernant le contrôle personnalisé et le problème subsistait, jusqu'à ce que je vérifie les références et qu'il se référençait lui-même afin de «pouvoir» obtenir l'ancien contrôle personnalisé. J'ai supprimé la référence et c'est fait !!
la source
J'ai eu le même problème sur mon application Xamarin dans Visual Studio et il a été résolu en débranchant mon appareil mobile de test. L'application a été fermée et le débogueur arrêté, mais l'erreur se produisait toujours lors de la tentative de génération ou de reconstruction de la solution. Il ne s'est arrêté qu'après avoir débranché l'appareil car je devais recevoir un appel.
la source
Juste pour jeter mes 2 cents. Mon problème a été résolu en ouvrant le Gestionnaire des tâches et en tuant l'application. Il fonctionnait en arrière-plan sans aucune indication qu'il fonctionnait du tout (aucun élément dans la barre des tâches, aucune interface utilisateur, rien), mais je ne sais pas pourquoi cela s'est produit. De toute évidence, le débogueur ne fonctionnait pas et je n'avais qu'une seule instance de VS ouverte à l'époque. Cela m'étonne que cela se passe toujours dans ce VS 2017.
Je peux peut-être ajouter une étape de construction qui recherche l'application exécutant l'arrière-plan et la tue avant de démarrer la nouvelle.
la source
J'ai eu le même problème et je n'ai pas pu rectifier en utilisant l'une des méthodes mentionnées dans les réponses précédentes. J'ai résolu le problème en tuant toutes les instances de "SSIS Debug Hist (32 bits)" dans le gestionnaire de tâches et en travaillant maintenant normalement.
la source
Comment votre application Web est-elle configurée? Fonctionne-t-il sous Cassini (le serveur Web du plateau) ou IIS?
Cela ne devrait pas arriver normalement. Je pense que ProcessExplorer peut vous dire quels fichiers un processus a verrouillés. Si ce n'est pas l'explorateur de processus, l'un des autres outils sysinternals.
Une chose à essayer avant même de télécharger l'un des outils SI est d'arrêter le serveur Web Cassini et de voir si cela libère le fichier.
la source
Ce qui a fonctionné pour moi a été de redémarrer IIS
la source
J'ai eu ce même problème aussi. changer la configuration de débogage / version n'a pas fait l'affaire. du moins pas sans construire entre les deux.
dans ma solution (winform), il a été résolu en ouvrant le mainform du winform dans le concepteur. passage au code (F7). Puis fermez le code, fermez le concepteur du winform et reconstruisez tout (ctrl-shift-B). Cela a fonctionné pour moi.
semble qu'une sorte de handle de l'application winform (qui exécute un backgroundworker) avait encore un handle de fichier sur certaines des autres bibliothèques utilisées.
la source
J'ai eu deux instances de Visual Studio ouvert la même solution.
la source
Dans mon cas, il y avait des processus vstest en cours d'exécution (avec différents noms mais contenant tous la chaîne vstest). J'ai dû les terminer dans taskmgr.
la source
Même erreur, résolue en mettant à jour les packages d'assistance Google Nuget
la source
Quand j'ai terminé le processus
.Net Core Host
, tout s'est bien passé. Je n'ai pas eu à fermer Visual Studio ni à modifier quoi que ce soit d'autre.la source
Pour ceux qui développent dans VS avec Docker, redémarrez le docker pour le service Windows et le problème sera résolu immédiatement.
Avant de redémarrer docker, j'ai essayé toutes les réponses mentionnées, je n'ai pas trouvé de processus msbuild.exe en cours d'exécution, j'ai également essayé de redémarrer VS sans succès, seul le redémarrage de docker fonctionnait.
la source
Une autre solution: lorsque les fichiers sont verrouillés, le processus de blocage est signalé (quelque chose comme "ServiceHub.Host.CLR.x64 (7764)") avec son identifiant entre parenthèses. Pour vous débarrasser du processus, ouvrez PowerShell (x + Win + I) et tapez: "Stop-Process -Id idNumber".
la source
J'ai récemment rencontré le problème lors du déploiement sur Service Fabric. L'erreur implique qu'un «fichier» est en cours d'utilisation, cependant, j'ai trouvé que le port était utilisé par un autre IDE. En arrêtant un service en cours d'exécution qui hébergeait déjà sur le port, j'ai pu empêcher cette exception de se produire.
la source
J'avais fait face au même problème. J'ai essayé plusieurs solutions énumérées ci-dessus mais elles n'ont pas fonctionné pour moi.
J'ai résolu ce problème en fermant la connexion à partir de l'explorateur de serveurs et en fermant tous les onglets ouverts dans Visual Studio.
la source
S'il s'agit d'un projet SSIS, ouvrez le gestionnaire de tâches et supprimez toutes les instances de DtsDebugHost.exe, ce qui devrait libérer les fichiers verrouillés.
la source
J'utilise Visual Studio Code et j'ai reçu cette erreur car le serveur de développement était en cours d'exécution (j'ai exécuté le serveur de développement en appuyant sur
Ctrl + F5
).Ainsi, j'ai juste cliqué sur le panneau d'arrêt pour l'arrêter et l'erreur a disparu.
la source
J'ai eu ce problème (et c'est un problème que j'ai vu dans d'autres endroits pas seulement VS).
C'est causé par Dropbox (dans mon cas). Après avoir modifié du code et appuyé sur Exécuter, Dropbox verrouille parfois immédiatement le fichier (afin qu'il puisse le traiter).
Solution 1. Appuyez à nouveau sur Exécuter
Solution 2. Suspendez la boîte de dépôt. (pas bon si vous utilisez Dropbox comme sauvegarde cloud)
Solution 3. Supprimez le dossier de construction de la liste de synchronisation des boîtes de dépôt.
la source
La suppression d'Obj, le dossier de vente au détail et de débogage du projet .NET et la reconstruction ont de nouveau fonctionné pour moi.
la source