2008-10-08 7 views
6

De vez en cuando, cuando dejo de depurar nuestro ensamblado de interfaz de usuario, obtengo error de seguimiento que requiere un reinicio de Visual Studio 2008 y que está matando a mi productividad:VS 2k8 no libera el identificador de archivo después de la depuración Se detiene: no se puede copiar el archivo X al directorio de salida porque lo está usando otro proceso

Error 13 Unable to copy file [UI assembly] to [output directory]. The process cannot access the file [output directory][UI assembly] because it is being used by another process.

Después de reiniciar, me sale este error:

Error 1 Metadata file [utility function assembly in RELEASE folder] could not be found.

me parece muy, muy extraño, porque nunca usamos la Liberar la configuración

Estoy usando VS 2k8 SP1 en Windows Vista.

Sé que es el depurador VS que no está liberando su identificador de archivo mediante el uso de la utilidad de control (anteriormente de Sysinternals). El proceso es devenv.exe.

He intentado cerrar y volver a abrir la solución. No funcionó Solo funciona un reinicio completo de VS2k8.

He intentado agregar un evento de precompilación, para mover el archivo como se describe here, pero eso no funciona porque Windows no puede eliminar el archivo por la misma razón que no puede reemplazarlo: tiene un mango abierto

Incluso traté de cerrar manualmente el identificador con el utilitario handle.exe descrito anteriormente, y luego intenté el evento de preconstrucción. Aparentemente, Visual Studio no sabe que su identificador se ha cerrado porque la compilación VS falla, pero handle.exe no muestra ningún manejador de archivo abierto en el archivo en cuestión.

Para el registro, que aquí son los complementos que corro:

  • ReSharper 4
  • inteligente parche 2008
  • Typemock aislador
  • TestDriven.NET 2.13.2184

También uso los controles de Developer Express para este proyecto, por lo que puede tener algo que ver con eso también.

+0

Más respuestas relevantes aquí: http://stackoverflow.com/questions/11646047/error-cannot-access-file-bin-debug-because-it-is-being-used-by-another-proc –

+0

@JonSchneider He votado para cerrar como duplicado, y usted también debería sentirse libre. No creo que mi pregunta agregue mucho valor al duplicado que identificó. –

+0

Normalmente en esta situación prefiero identificar la pregunta que se hizo * 4 años después * como la que está duplicada, pero dado que esa otra pregunta parece haber recibido más atención, y con su bendición, seguiré adelante . ¡Gracias! –

Respuesta

2

Tuve problemas similares en VS2005 y VS2008 sin complementos instalados o controles de terceros en el proyecto. La única solución que he encontrado es cerrar Visual Studio y volver a abrirlo. Es un problema muy intermitente y, aunque molesto, parece que no puede resolverse por su parte.

0

Tuvimos un problema similar con VS2002 al construir nuestros proyectos. Lo solucionamos cuando pasamos a VS2005 al compilar nuestra aplicación en una carpeta de compilación común (es decir, {SolutionRoot} \ Build).

+0

Con esto, ¿quiere decir que tanto su ensamblaje de nivel superior como todos sus ensamblajes dependientes se compilan en la misma carpeta? –

0

He comenzado a notar que parece ser más probable que ocurra (y tal vez solo ocurra) al hacer un método que se llama durante Application.Idle.

1

Se podría probar este script de evento de pre-construcción:

si existe "$ (TargetPath) .locked" del "$ (TargetPath) .locked" si no existe "$ (TargetPath) .locked" mover "$ (TargetPath)" "$ (TargetPath).bloqueados"

Algunas personas han informado de que se soluciona el problema

ACTUALIZACIÓN:.

que hacer, por casualidad, tienen este en su .config (o machine.config?):

<hostingEnvironment shadowCopyBinAssemblies="false"/> 

Parece que esto creará (o tal vez solo exacerbará) el original "no se puede copiar" durante el problema de compilación. Por supuesto, solo agregué esa configuración a mi proyecto porque estaba obteniendo un error al depurar ASP.NET una para sombrear/copiar los archivos DLL. Sin embargo, a posteriori, ese problema es bastante más fácil de tratar que el problema de bloqueo. Con el problema de sombra/copia, solo necesita compilar y luego esperar unos segundos. Es un poco molesto, pero sin duda es un problema menor que tener que reiniciar Visual Studio cada vez que desea hacer una compilación.

+0

Sí, lo he intentado antes sin ningún resultado. –

+0

Estos son ensambles de formularios de Windows. –

0

Esto parece ser solucionado al cambiar el nombre de salida del conjunto para que coincida con el espacio de nombres predeterminado, por alguna razón.

Encontré esta solución a través de https://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=114694. La opción de script de precompilación funciona, pero solo si el ensamblado ya existe. Si haces una limpieza/compilación, no funcionará.

+0

Solo para aclarar, ¿quiere decir que en las propiedades del proyecto en la pestaña Aplicación, los campos "Nombre del ensamblado" y "Espacio de nombre predeterminado" deben ser del mismo valor? –

+0

Lamento no haber visto esta respuesta ... pero sí. No sé por qué comenzó este problema, pero todos en el equipo después de más de un año de desarrollo comenzaron a obtenerlo, y esto lo solucionó. No hemos tenido el problema desde entonces. Era solo este ensamblaje, y tenemos otros que no usan nombres de conjuntos de espacios y nombres predeterminados coincidentes. –

1

comenzando la aplicación de estudio visual en modo compatibilidad con xp o vista resolvió el problema en mi entorno (win7 64bit).

+0

Mi problema particular era usar Vista, pero ¡buena información para saber! –

Cuestiones relacionadas