Mise à jour: un exemple de projet reproduisant ce bogue est disponible ici sur Microsoft Connect . J'ai également testé et vérifié que la solution donnée dans la réponse acceptée ci-dessous fonctionne sur cet exemple de projet. Si cette solution ne fonctionne pas pour vous, vous rencontrez probablement un problème différent (qui appartient à une question distincte).
C'est une question posée auparavant, à la fois ici sur Stack Overflow et dans d'autres endroits, mais aucune des suggestions que j'ai trouvées jusqu'à présent ne m'a aidé, donc je dois juste essayer de poser une nouvelle question.
Scénario: j'ai une application Windows Forms simple (C #, .NET 4.0, Visual Studio 2010). Il a quelques formes de base dont la plupart des autres formes héritent, il utilise Entity Framework (et les classes POCO) pour l'accès à la base de données. Rien d'extraordinaire, pas de multi-threading ou quoi que ce soit.
Problème: tout allait bien pendant un moment. Puis, à l'improviste, Visual Studio n'a pas réussi à générer lorsque j'étais sur le point de lancer l'application. J'ai reçu l'avertissement "Impossible de supprimer le fichier '... bin \ Debug \ [ProjectName] .exe'. L'accès au chemin '... bin \ Debug \ [ProjectName] .exe' est refusé." et l'erreur «Impossible de copier le fichier« obj \ x86 \ Debug \ [ProjectName] .exe »vers« bin \ Debug \ [ProjectName] .exe ». Le processus ne peut pas accéder au fichier« bin \ Debug \ [ProjectName] .exe "car il est utilisé par un autre processus." (Je reçois à la fois l'avertissement et l'erreur lors de l'exécution de Rebuild, mais uniquement l'erreur lors de l'exécution de Build - vous ne pensez pas que cela soit pertinent?)
Je comprends parfaitement ce que dit l'avertissement et le message d'erreur: Visual Studio essaie évidemment d'écraser le fichier exe alors qu'il a en même temps un verrou dessus pour une raison quelconque. Cependant, cela ne m'aide pas à trouver une solution au problème ... La seule chose que j'ai trouvée fonctionne est d'arrêter Visual Studio et de le redémarrer. La construction et le lancement fonctionnent alors, jusqu'à ce que je modifie certains formulaires, puis j'ai à nouveau le même problème et je dois redémarrer ... Assez frustrant!
Comme je l'ai mentionné ci-dessus, cela semble être un problème connu, il existe donc de nombreuses solutions suggérées. Je vais simplement énumérer ce que j'ai déjà essayé ici, afin que les gens sachent quoi ignorer:
- Création d'une nouvelle solution propre et copiez simplement les fichiers de l'ancienne solution.
Ajout de ce qui suit à l'événement suivant de pré-génération du projet:
if exist "$(TargetPath).locked" del "$(TargetPath).locked" if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
Ajout de ce qui suit aux propriétés du projet (fichier .csproj):
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
Cependant, aucun d'entre eux n'a fonctionné pour moi, vous pouvez donc probablement comprendre pourquoi je commence à être un peu frustré. Je ne sais pas où chercher, alors j'espère que quelqu'un a quelque chose à me donner! Est-ce un bug dans VS, et si oui, y a-t-il un patch? Ou ai-je fait quelque chose de mal, ai-je une référence circulaire ou similaire, et si oui, comment pourrais-je le savoir?
Toutes les suggestions sont très appréciées :)
Mise à jour: Comme mentionné dans le commentaire ci - dessous, je l' ai également vérifié avec l' Explorateur de processus qu'il fait est Visual Studio qui bloque le fichier.