32 votes

Impossible de copier le fichier reference.dll dans bin / reference.dll. Le processus ne peut pas accéder au fichier reference.dll car il est utilisé par un autre processus

Pour l'un de mes ASP.NET 3.5 applications, chaque fois que j'essaie de construire l'application web, il jette à la suite de construire des erreurs dans Visual Studio 2008:

Erreur 165 Impossible de copier le fichier "C:\InOne\Common\DexProcessor\bin\Debug\DexProcessor.dll" pour "bin\DexProcessor.dll". Le processus ne peut pas accéder au fichier 'bin\DexProcessor.dll" parce qu'il est utilisé par un autre processus. InVision2 Erreur 166 Impossible de copier le fichier "C:\InOne\Common\DexParser\bin\Debug\InOne.DexParser.dll" pour "bin\InOne.DexParser.dll". Le processus ne peut pas accéder au fichier 'bin\InOne.DexParser.dll" parce qu'il est utilisé par un autre processus. InVision2 Erreur 167 Impossible de copier le fichier "C:\InOne\Common\AlertProcessor\bin\Debug\InOne.Invision.AlertProcessing.dll" pour "bin\InOne.Invision.AlertProcessing.dll". Le processus ne peut pas accéder au fichier 'bin\InOne.Invision.AlertProcessing.dll" parce qu'il est utilisé par un autre processus. InVision2 Erreur 168 Impossible de copier le fichier "C:\InOne\Common\InVision.BusinessLogic\bin\Debug\InVision.BusinessLogic.dll" pour "bin\InVision.BusinessLogic.dll". Le processus ne peut pas accéder au fichier 'bin\InVision.BusinessLogic.dll" parce qu'il est utilisé par un autre processus. InVision2 Erreur 169 Impossible de copier le fichier "C:\InOne\Common\InVision.Common\bin\Debug\InVision.Common.dll" pour "bin\InVision.Common.dll". Le processus ne peut pas accéder au fichier 'bin\InVision.Common.dll" parce qu'il est utilisé par un autre processus. InVision2 Erreur 170 Impossible de copier le fichier "C:\InOne\Data\bin\Debug\InVision.Data.dll" pour "bin\InVision.Data.dll". Le processus ne peut pas accéder au fichier 'bin\InVision.Data.dll" parce qu'il est utilisé par un autre processus. InVision2 Erreur 171 Impossible de copier le fichier "C:\InOne\Common\InVision.DataAccessLayer\bin\Debug\InVision.DataAccessLayer.dll" pour "bin\InVision.DataAccessLayer.dll". Le processus ne peut pas accéder au fichier 'bin\InVision.DataAccessLayer.dll" parce qu'il est utilisé par un autre processus. InVision2 Erreur 172 Impossible de copier le fichier "C:\InOne\Common\InVision.DataAccessLayer.SqlClient\bin\Debug\InVision.DataAccessLayer.SqlClient.dll" pour "bin\InVision.DataAccessLayer.SqlClient.dll". Le processus ne peut pas accéder au fichier 'bin\InVision.DataAccessLayer.SqlClient.dll" parce qu'il est utilisé par un autre processus. InVision2

Cette juste a commencé il y a une semaine et c'est très agaçant... je dois aller dans l'application web bin du dossier et supprimer les fichiers pdb et puis il va permettez-moi de supprimer la dll est la plupart du temps. Chaque fois que dans un certain temps il ne me laisse pas donc je dois fermer Visual Studio et puis ça me permet de les supprimer. J'ai vérifié et c'est Visual Studio (devenv) qui est le verrouillage de la dll. Le redémarrage de la machine n'aide pas.

C'est vraiment à réduire ma productivité, est-ce que je peux faire pour résoudre ce problème?


Comme mentionné, Visual Studio 2008 (devenv.exe) est le processus de verrouillage de la Dll.

J'ai remarqué quelque chose... Quand il compile correctement, c'est la copie de toutes les Dll dans le dossier bin, puis ils sont tous supprimés, puis une nouvelle série sont copiés dans la poubelle. Quand elle n'est pas réussie, la première série de Dll sont copiés, puis il échoue. Il semble donc à utiliser le dossier bin de 2 choses quand il ne devrait être pour 1. Cela vous aide??

19voto

Justin Points 3172

Le problème a finalement été que dans le web.config, quelqu'un avait ajouté:

 hostingEnvironment shadowCopyBinAssemblies="false"
 

Après avoir commenté cela, tout a commencé à se construire correctement. Quel cauchemard!!

13voto

Benoit Points 39210

Utilisez ProcessExplorer pour savoir quel processus a ouvert le fichier et à partir de là.

Si un processus utilise actuellement ces DLL, vous ne pouvez pas les supprimer et les réécrire. Vous devrez tuer ou arrêter le processus en utilisant ces DLL pendant la compilation.

12voto

J'ai lutté contre ce problème depuis des ANNÉES!

Avez-vous essayé d'ajouter ceci à votre pré-créer l'Événement?

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

Voir ce pour plus d'info: http://nayyeri.net/file-lock-issue-in-visual-studio-when-building-a-project

Voici un autre thread, avec plus de choses à essayer...

http://social.msdn.microsoft.com/forums/en-US/Vsexpressinstall/thread/5b71eb06-5047-483d-8fd3-b75c102d41e9/?prof=required

10voto

Marcel Gheorghita Points 945

Ce qui a fonctionné pour moi est la suivante pré-construction de l'événement:

if exist "$(TargetPath).locked.bak" del "$(TargetPath).locked.bak"
if exist "$(TargetPath).bak" del "$(TargetPath).bak"
if exist "$(TargetPath).locked" ren "$(TargetPath).locked" "$(TargetPath).locked.bak"
if exist "$(TargetPath)" ren "$(TargetPath)" "$(TargetPath).bak"

Ce que j'ai remarqué dans mon cas, c'est que les 2 fichiers sont en train d'être créé et ne peut pas être supprimé. Vous pouvez, cependant, de les renommer (et ils le sont encore en cours d'utilisation si vous essayez de les supprimer). Sur une prochaine génération, les fichiers renommés sont plus en cours d'utilisation (verrouillage supprimé) et ils peuvent être supprimés, ce qui est ce que le script ci-dessus ne, après quoi il peut en toute sécurité renommer le nouveau fichier verrouillé, donc il n'y aura pas de problèmes dans la génération de la sortie de la construction.

Les autres événements pre-build posté ici et dans d'autres endroits ne m'aide pas beaucoup (ils ont travaillé que pour un supplément de construire ou seulement un peu avant que le problème se pose de nouveau). Alors maintenant, je suis actuellement en utilisant celui affiché ci-dessus pour mes fins de débogage.

4voto

Craig Nichols Points 31

Je n'ai malheureusement pas eu de chance avec les événements pré-build. Ce qui a fonctionné, à la manière typique de IT Crowd, a été de quitter Visual Studio et de le rouvrir.

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