2009-06-17 7 views
42

Je reçois cette erreur à plusieurs reprises lors de l'élaboration des applications ASP.Net:ASP.Net ne peut pas copier créer/shadow

Cannot create/shadow copy 'XXXXX' when that file already exists 

Où XXXXX est une DLL aléatoire. Typiquement, la DLL est l'une des DLL de la bibliothèque d'entreprise de Microsoft, mais elle varie.

C'est vraiment aléatoire, et c'est très frustrant. Je vais passer des heures sans avoir l'erreur, puis obtenir cette erreur toutes les 10-20 minutes.

J'ai vu plusieurs solutions. Par exemple, this question. J'ai essayé d'utiliser l'option Clean Solution, et j'ai simplement redémarré mon IIS local. Cependant, il se produit toujours à la même fréquence aléatoire mais persistante.

J'ai aussi vu beaucoup de gens mentionnent en utilisant cette option dans le fichier de configuration:

<hostingEnvironment shadowCopyBinAssemblies="false" /> 

Cependant, d'autres ont dit qu'il était problématique, et il ne devrait certainement pas être utilisé dans la production. Donc, devrais-je abandonner et essayer l'option shadowCopyBinAssemblies? (Et assurez-vous de ne pas copier ce changement dans d'autres environnements.) Suis-je le seul à avoir ce problème souvent?

Note: J'utilise Visual Studio 2008.

+1

Je reçois à plusieurs reprises cette erreur et je suis surpris que Microsoft n'a toujours pas résolu ce problème. –

+2

nous travaillons activement sur cela maintenant. Étant donné que c'est très difficile à reproduire, cela rend la résolution du problème plus difficile. – RickAndMSFT

+1

J'ai renvoyé le bogue de connexion, juste pour qu'il puisse être suivi par les clients MS. https://connect.microsoft.com/VisualStudio/commentaires/détails/786247/impossible de créer-ombre-copie-xxxxx-quand-ce-fichier-existe déjà –

Répondre

23

Les solutions de contournement suivantes proviennent de this now defunct connect issue:

  • ajouter <hostingEnvironment shadowCopyBinAssemblies="false" /> à la section <system.web> de votre fichier web.config.
  • Redémarrez Cassini lorsque vous avez le problème
  • Si vous obtenez l'erreur, arrêtez le débogueur, faites un clic droit sur la solution et "solution propre". Appuyez sur F5 pour redémarrer le débogueur. C'est vraiment embêtant car il a> 50% de taux d'échec pour moi et vous penseriez qu'il ne devrait pas être une option manuelle pour CLEAN SOLUTION! Cette application POS de 1200 $ devrait le nettoyer pour vous automatiquement!
  • Voici une autre solution de contournement qui pourrait être plus attrayante pour certains, avec l'aimable autorisation de Gary Farr (http://blogs.claritycon.com/blogs/gary_farr/archive/2007/03/09/2888.aspx).
  • Ajouter ce qui suit à vos événements pré-construction:

    IF EXIST $(TargetPath).LOCKED (del $(TargetPath).LOCKED) ELSE (IF EXIST $(TargetPath) (move $(TargetPath) $(TargetPath).LOCKED))

  • Une solution qui fait le travail pour moi au lieu d'utiliser "Build" utiliser "Build Solution"

  • Après une build réussie, je compte jusqu'à dix, puis je rafraîchis mon webform.
  • J'ai trouvé qu'en réinscrivant ASP.NET contre IIS le problème "s'en va" - je n'ai pas eu le problème depuis. Vous devrez exécuter les éléments suivants sur la ligne de commande:
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i. Cela ne fonctionnera probablement pas pour tout le monde - c'est un problème complexe.
  • redémarrer VS.
  • Lors du nettoyage de la solution, quelques avertissements ont été émis concernant les fichiers qui n'ont pas pu être supprimés. Ces fichiers avaient leur jeu de propriétés en lecture seule. Après avoir défini la propriété de ces fichiers en lecture/écriture, le problème a été résolu.
  • Redémarrez IIS

EDIT: objets récupérés à partir an old version of the page (avec la permission de archive.org).

+14

Merci pour le lien, mais a pris quelques tamisage. Celui qui a fonctionné pour moi était "après une construction réussie, je compte jusqu'à dix, puis je rafraîchis mon formulaire Web." (Bien que je n'ai compté que 2) –

+1

Meilleur correctif de ce lien pour moi était "redémarrer IIS". Je cours IIS local au lieu de Cassini en tant que mon serveur Web de dev. À votre santé. P.S. J'utilise VS2010, donc ils ne l'ont toujours pas corrigé. – LordScree

0

Je recevais cette question fréquemment lorsque vous travaillez avec une DLL importée que nous avons créé.

Les tentatives d'arrêt ont échoué, et ont même introduit des problèmes différents, mais chaque fois que cela se produisait je ferais juste une solution de reconstruction et le problème disparaîtrait immédiatement pour cette construction.

Aussi, je n'ai pas vu le problème depuis que j'ai travaillé sur Visual Studio 2002. 2008 ne connaît pas ce problème, pas plus que 2005. Utilisez-vous un ancien VS?

+0

J'utilise Visual Studio 2008 –

+0

ok, rien à voir avec la version alors. Si vous faites une solution de reconstruction, votre application fonctionne-t-elle? – CRice

+0

Oui, je "nettoie" la solution, la reconstruis et travaille 10-20 minutes. Ensuite, je reçois à nouveau l'erreur et répète. –

1

Ouvrez les propriétés de votre projet, ouvrez l'onglet Web et assurez-vous que l'option Activer Modifier et Continuer n'est pas cochée.

+1

cela fonctionne pour moi! – skhro87

0

GO au mode de conception, puis faites un clic droit et vue frapper dans le navigateur, le problème disparaîtra Anil Madan

+8

Qui fonctionne exactement le même que fumer une cigarette et le problème disparaîtra – RickAndMSFT

0

Ajouter ces lignes dans la ligne de commande de l'événement pré-construction, qui débloque essentiellement la DLL dans Visual Studio:

IF EXIST $(TargetPath).LOCKED (del $(TargetPath).LOCKED) 
    ELSE (IF EXIST $(TargetPath) (move $(TargetPath) $(TargetPath).LOCKED)) 

Recompilez et impossible de copier l'erreur DLL ne se produira pas.

1

Dans ma situation seulement iisreset travaillé.

39

Attendez entre 10 et 30 secondes et actualisez. Pour une raison quelconque, cela fonctionne toujours pour moi.

+2

cela a fonctionné parce que la raison principale de ce problème est d'essayer d'accéder à la page Web avant que le processus de construction est terminé dans VS. – Zafar

+0

C'est intéressant, Zafar. Avez-vous d'autres informations à ce sujet? Ce bug me rend fou parfois! – joshcomley

+1

La seule chose que je sais à ce sujet est - vous obtenez cette erreur lorsque vous essayez d'accéder à une page Web avant que les fichiers DLL dépendants sont finis de construire. Eh bien, ce n'est pas le seul cas de l'erreur, je pense, mais celui-ci est le plus populaire. – Zafar

5

Redémarrez Visual Studio, qui a fonctionné pour moi.

0

Je recevais le même problème, en plaçant ce code dans un web.config travaillé pour moi.

<hostingEnvironment shadowCopyBinAssemblies="false" /> 
0

Vous venez d'actualiser (F5) votre page.

0

Nettoyez et reconstruisez-le. Il m'a aidé et cela a souvent fonctionné pour moi

Questions connexes