2009-06-17 20 views
42

consigo este error en varias ocasiones en el desarrollo de aplicaciones ASP.NET:ASP.Net no puede crear copias/sombra

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

donde XXXXX es una DLL al azar. Normalmente, el DLL es uno de los archivos DLL de Enterprise Library de Microsoft, pero varía.

Es realmente aleatorio, y es muy frustrante. Pasaré horas sin obtener el error, y luego obtendré este error cada 10-20 minutos.

He visto varias soluciones. Por ejemplo, this question. Intenté usar la opción de Solución limpia y simplemente reinicié mi IIS local. Sin embargo, todavía ocurre a la misma frecuencia aleatoria pero persistente.

También he visto a muchas personas mencionan el uso de esta opción en el archivo de configuración:

<hostingEnvironment shadowCopyBinAssemblies="false" /> 

Sin embargo, otros han mencionado que sea problemático, y que definitivamente no debe utilizarse en la producción.

¿Debo darme por vencido y probar la opción shadowCopyBinAssemblies? (Y asegúrese de no copiar este cambio en otros entornos.) ¿Soy el único que recibe este problema con tanta frecuencia?

Nota: Estoy utilizando Visual Studio 2008.

+1

Recibo este error repetidamente y estoy sorprendido de que Microsoft todavía no haya solucionado esto. –

+2

estamos trabajando activamente en esto ahora. Dado que es realmente difícil de reproducir, dificulta la tarea de solucionar el problema. – RickAndMSFT

+1

He vuelto a enviar el error de conexión, solo para que pueda ser rastreado por los clientes de MS. https://connect.microsoft.com/VisualStudio/feedback/details/786247/can not-create-shadow-copy-xxxxx-when-that-file-already-exists –

Respuesta

23

Las soluciones siguientes provienen de this now defunct connect issue:

  • <hostingEnvironment shadowCopyBinAssemblies="false" /> añadir a la sección <system.web> de su archivo web.config.
  • Reinicie Cassini cuando aparezca el problema
  • Si obtiene el error, detenga el depurador, haga clic con el botón derecho en la solución y "solución limpia". Presione F5 para reiniciar el depurador. Esto es realmente molesto ya que tiene> 50% de índice de fallas para mí y usted pensaría que ¡no debería ser una opción manual para LIMPIAR LA SOLUCIÓN! ¡Esta aplicación POS de $ 1200 debería limpiarlo automáticamente!
  • Aquí hay otra solución que puede ser más atractiva para algunos, cortesía de Gary Farr (http://blogs.claritycon.com/blogs/gary_farr/archive/2007/03/09/2888.aspx).
  • Añadir lo siguiente a sus-construir pre eventos:

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

  • Una solución alternativa que hace el trabajo para mí es en lugar de utilizar "Construir" use "Generar solución"

  • Después una compilación exitosa, cuento hasta diez, luego actualizo mi formulario web.
  • He encontrado que al volver a registrar ASP.NET contra IIS, el problema "desaparece". No he tenido el problema desde entonces. Tendrá que ejecutar lo siguiente en la línea de comando:
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i. Es muy probable que esto no funcione para todos: es un problema complejo.
  • reiniciar VS.
  • Al limpiar la solución, se emitieron algunas advertencias sobre los archivos que no se pudieron eliminar. Estos archivos tenían su propiedad de solo lectura establecida. Después de establecer la propiedad de estos archivos para leer/escribir, el problema fue resuelto.
  • Reiniciar IIS

EDIT: artículos recuperados de an old version of the page (cortesía de archive.org).

+14

Gracias por el enlace, pero tomó algo de tamizado. El que funcionó para mí fue "después de una compilación exitosa, cuento hasta diez, luego actualizo mi formulario web". (aunque solo conté con 2) –

+1

La mejor solución de ese enlace para mí fue "reiniciar IIS". Estoy ejecutando IIS local en lugar de Cassini como mi servidor web de desarrollo. Aclamaciones. PD Estoy usando VS2010, por lo que todavía no lo han solucionado. – LordScree

0

que estaba recibiendo este tema con frecuencia cuando se trabaja con un archivo DLL importado, que hemos creado.

Ha fallado el intento de detener, e incluso ha presentado diferentes problemas, pero cada vez que ocurría, simplemente hacía una solución de reconstrucción y el problema desaparecía inmediatamente para esa compilación.

Además, no he visto el problema desde que trabajé en Visual Studio 2002. 2008 no tiene este problema que yo sepa, tampoco lo hace en 2005. ¿Está usando un VS anterior?

+0

Estoy usando Visual Studio 2008 –

+0

bien, nada que ver con la versión entonces. Si haces una solución de reconstrucción, ¿se ejecuta tu aplicación? – CRice

+0

Sí, "limpio" la solución, reconstruyo y trabajo durante 10-20 minutos. Luego recibo el error nuevamente y repito. –

1

Abra las propiedades de su proyecto, abra la pestaña Web y asegúrese de que la opción Habilitar Editar y Continuar no esté marcada.

+1

esto funciona para mí! – skhro87

0

ir al modo de diseño y haga clic derecho y golpeó vista en el navegador, el problema va a desaparecer Anil Madan

+8

Que funciona exactamente igual que ir a fumar un cigarrillo y el problema desaparecerá – RickAndMSFT

0

Añadir estas líneas en la línea de comandos del evento de pre-construcción, que básicamente se abre el archivo DLL en Visual Estudio:

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

No se volverá a compilar y no se podrá copiar el error de DLL.

1

En mi situación solo funcionó iisreset.

39

Espere entre 10-30 segundos y pulse actualizar. Por alguna razón, esto siempre me funciona.

+2

funcionó porque la razón principal de este problema es intentar acceder a la página web antes de que el proceso de compilación se termine en VS. – Zafar

+0

Eso es interesante, Zafar. ¿Tienes más información sobre eso? Este error me vuelve loco a veces! – joshcomley

+1

Lo único que sé sobre esto es que obtienes este error cuando intentas acceder a una página web antes de que los archivos DLL dependientes hayan terminado de compilarse. Bueno, ese no es el único caso del error, creo, pero este es el más popular. – Zafar

5

Simplemente reinicie Visual Studio, eso funcionó para mí.

0

que estaba recibiendo el mismo problema, mediante la colocación de este código en un web.config trabajado para mí.

<hostingEnvironment shadowCopyBinAssemblies="false" /> 
0

Acaba de actualizar (F5) su página.

0

Limpiar y construir de nuevo. Me ayudó y a menudo funcionó para mí

Cuestiones relacionadas