Actualización: un proyecto de muestra que reproduce este error se puede encontrar aquí en Microsoft Connect . También probé y verifiqué que la solución dada en la respuesta aceptada a continuación funciona en ese proyecto de muestra. Si esta solución no funciona para usted, es probable que tenga un problema diferente (que pertenece a una pregunta separada).
Esta es una pregunta que se hizo antes, tanto aquí en Stack Overflow como en otros lugares, pero ninguna de las sugerencias que he encontrado hasta ahora me ha ayudado, así que solo tengo que intentar hacer una nueva pregunta.
Escenario: Tengo una aplicación simple de Windows Forms (C #, .NET 4.0, Visual Studio 2010). Tiene un par de formas base de las cuales la mayoría de las otras formas heredan, usa Entity Framework (y clases POCO) para acceder a la base de datos. Nada sofisticado, no multihilo ni nada.
Problema: todo estuvo bien por un tiempo. Luego, de la nada, Visual Studio no se pudo compilar cuando estaba a punto de iniciar la aplicación. Recibí la advertencia "No se puede eliminar el archivo '... bin \ Debug \ [ProjectName] .exe'. El acceso a la ruta '... bin \ Debug \ [ProjectName] .exe' está denegado". y el error "No se puede copiar el archivo 'obj \ x86 \ Debug \ [ProjectName] .exe' a 'bin \ Debug \ [ProjectName] .exe'. El proceso no puede acceder al archivo 'bin \ Debug \ [ProjectName] .exe 'porque está siendo utilizado por otro proceso ". (Recibo tanto la advertencia como el error al ejecutar Rebuild, pero solo el error al ejecutar Build, ¿no cree que sea relevante?)
Entiendo perfectamente lo que dice el mensaje de advertencia y error: Visual Studio obviamente está tratando de sobrescribir el archivo exe mientras que al mismo tiempo tiene un bloqueo por alguna razón. Sin embargo, esto no me ayuda a encontrar una solución al problema ... Lo único que he encontrado que funciona es cerrar Visual Studio y volver a iniciarlo. La creación y el inicio funcionan, hasta que realice un cambio en algunos de los formularios, luego tengo el mismo problema nuevamente y tengo que reiniciar ... ¡Muy frustrante!
Como mencioné anteriormente, este parece ser un problema conocido, por lo que hay muchas soluciones sugeridas. Solo enumeraré lo que ya he probado aquí, para que la gente sepa qué omitir:
- Crear una nueva solución limpia y simplemente copiar los archivos de la solución anterior.
Agregar lo siguiente a lo siguiente al evento de precompilación del proyecto:
if exist "$(TargetPath).locked" del "$(TargetPath).locked" if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
Agregar lo siguiente a las propiedades del proyecto (archivo .csproj):
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
Sin embargo, ninguno de ellos funcionó para mí, por lo que probablemente pueda ver por qué estoy comenzando a sentirme un poco frustrado. No sé dónde buscar, ¡así que espero que alguien tenga algo que darme! ¿Es esto un error en VS, y si es así, hay un parche? ¿O he hecho algo mal, tengo una referencia circular o similar, y si es así, cómo podría averiguarlo?
Cualquier sugerencia es altamente apreciada :)
Actualización: como se menciona en el comentario a continuación, también he comprobado usando Process Explorer que en realidad es Visual Studio el que está bloqueando el archivo.
fuente
Respuestas:
Esto va a sonar estúpido, pero probé todas estas soluciones, ejecutando VS2010 en Windows 7. Ninguno de ellos funcionó, excepto el cambio de nombre y la construcción, que fue MUY tedioso por decir lo menos. Finalmente, rastreé al culpable y me cuesta creerlo. Pero estaba usando el siguiente código en AssemblyInfo.cs ...
Esto es bastante común, pero por alguna razón, cambiar la versión a 2.0.0.0 hizo que las cosas volvieran a funcionar. No sé si es algo específico de Windows 7 (solo lo he estado usando durante 3-4 semanas), o si es aleatorio, o qué, pero me lo arregló. Supongo que VS estaba controlando cada archivo que generaba, por lo que sabría cómo incrementar las cosas. Realmente no estoy seguro y nunca he visto que esto suceda antes. Pero si alguien más también se está sacando el pelo, pruébalo.
fuente
Como no he recibido más comentarios sobre este tema, pensé en compartir lo que terminó siendo mi solución:
Como lo sugirió Barry en un comentario a la publicación original, renombrar manualmente '... bin \ Debug [ProjectName] .exe' a otra cosa (por ejemplo, '[ProjectName] 1.exe' ) es una solución alternativa (I ' Sin embargo, no se me permite eliminar el archivo yo mismo, y debo decir que me parece un poco extraño, ya que uno creería que el mismo bloqueo que evita la eliminación también evitaría cambiar el nombre ...). No es una buena solución, pero es razonablemente rápido (al menos después de haberlo hecho un par de veces, casi se convierte en una rutina), y al menos mucho más rápido que reiniciar Visual Studio, que es lo que hice al principio.
En caso de que alguien se pregunte, también podría agregar que solo veo este problema de forma semialeatoria. Suele suceder después de haber realizado algunos cambios en el modo de diseño de un formulario (pero no siempre). Por lo general, no sucede si solo cambio el código de lógica de negocios o el código no visual relacionado (pero a veces sucede ...). De hecho, es frustrante, pero al menos tengo un truco que funciona para mí. Esperemos que mi próximo proyecto no también enfrente este problema ...
@Barry: si desea obtener crédito por su comentario, no dude en publicarlo como respuesta y me aseguraré de aceptarlo :)
fuente
Encontré una solución simple, simplemente deshabilite los Servicios de indexación de Windows para la carpeta y subcarpetas del proyecto
fuente
Tengo el mismo problema (MSB3021) con el proyecto WPF en VS2008 (en Windows 7 x32). El problema aparece si intento volver a ejecutar la aplicación demasiado rápido después de la ejecución anterior. Después de unos minutos, el archivo exe se desbloqueó solo y puedo volver a ejecutar la aplicación nuevamente. Pero una pausa tan larga me enoja. Lo único que realmente me ayudó fue ejecutar VS como administrador.
fuente
Cuando me encuentro con este problema, tiene que ver con el hecho de que el proyecto que estoy tratando de construir está configurado como el proyecto de inicio en la solución que bloquea el .exe en la carpeta obj (también aparece en su administrador de tareas) haga clic derecho en otro proyecto en su solución y elija establecer proyecto de inicio. Esto liberará el bloqueo, lo eliminará del administrador de tareas y debería permitirle construir.
fuente
Intenté todas las otras sugerencias en las respuestas aquí, ninguna de las cuales funcionó. Finalmente, utilicé Process Monitor para descubrir que mi .exe que VS2010 no podía construir estaba bloqueado por el proceso del Sistema (PID = 4). Buscar SO para situaciones que involucran esto arrojó esta respuesta.
Resumido: si tiene el servicio Application Experience deshabilitado (como lo hice), vuelva a habilitarlo e inícielo. Dos años de agravación terminaron.
fuente
También tuve un problema muy similar a este y encontré que la razón en mi caso era que había hecho que la carpeta bin \ debug estuviera disponible como una carpeta compartida en VMware y VMware, Explorer en el invitado de VM, o tal vez incluso un antivirus El programa bajo el invitado (aunque no creo que tuviera uno instalado) tenía un identificador en el archivo (s).
fuente
Deshabilitar "Habilitar el proceso de alojamiento de Visual Studio"
fuente
Sugeriría descargar
Process Explorer
para descubrir exactamente qué proceso está bloqueando el archivo. Se puede encontrar en:http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
fuente
Al usar Visual Studio, nunca se me ocurrió un proyecto simple para reproducir el error.
Mi solución fue deshabilitar el proceso de alojamiento de Visual Studio.
Para aquellos interesados, he adjuntado un seguimiento de identificador para el identificador infractor:
fuente
SI SU PROBLEMA NO SE RESUELVE AÚN:
El error de Visual Studio es:
"El proceso no puede acceder al archivo 'bin \ Debug ** app.exe **' porque está siendo utilizado por otro proceso".
Por lo tanto, vaya al administrador de tareas de Windows (Ctrl + Shift + Esc), busque el nombre de su aplicación y fuerce su cierre por Endprocces.
fuente
Aquí hay otra posibilidad:
Después de recibir este error en vs2012 / win7, fui e intenté eliminar el archivo en el directorio bin y el explorador indicó que el diseñador de interfaz de usuario XAML estaba usando el archivo.
Cerré todas las pestañas que tenía abiertas en VS, cerré VS, luego me aseguré de matar todos los procesos de MSBuild en el administrador de tareas. Finalmente, después de reiniciar VS pude construir la solución.
y otra posible causa:
He notado otra posible causa de este problema. Después de hacer una refactorización de código, mover proyectos dentro y fuera de una solución, mis referencias de proyecto ya no hacían referencia a los proyectos en la solución como se esperaba.
Esto induce a error al estudio visual a pensar que podría construir algunos proyectos al mismo tiempo, creando así los bloqueos de archivos.
EDITAR: Me ha sucedido esto en algunas ocasiones, incluso recientemente, con VS2012 y lo soluciona una vez que establezco el orden de compilación en las dependencias correctas, elimino los procesos de msbuild que VS dejó en ejecución y luego reinicié VS. Elimino los procesos de msbuild solo para estar seguro, pero cerrar VS también debería eliminarlos.
Lo que generalmente hago para causar esto es refactorizar un proyecto de modo que se base en otro proyecto dentro de la solución que no hacía referencia en la última compilación. Esto a veces parece confundir a VS y no actualiza el orden de compilación.
Para verificar el orden de compilación: haga clic con el botón derecho en la Solución en el Explorador de soluciones y seleccione "Orden de compilación del proyecto ..." y verifique que las dependencias se anoten correctamente para cada proyecto.
fuente
Reiniciar IIS: podría ser un proceso adjunto al depurador
fuente
Desactiva el antivirus y prueba. También estaba enfrentando ese problema ... pero en mi caso el antivirus estaba bloqueando mi aplicación cuando desactivé el antivirus, se resolvió.
fuente
Me enfrenté al mismo error.
Resolví el problema eliminando todo el contenido de las carpetas bin de todos los proyectos / bibliotecas dependientes.
Este error ocurre principalmente debido a cambios en la versión.
fuente
Esto se ha archivado varias veces en Connect, el sitio de informes de errores de la comunidad de Microsoft. Para su información, creo que este error ha afectado a Visual Studio desde 2003 y se ha solucionado después de RTM cada vez. :( Una de las referencias es la siguiente:
https://connect.microsoft.com/VisualStudio/feedback/details/568672/handles-to-project-dlls-are-not-released-when-compiling?wa=wsignin1.0
fuente
Haz las cosas simples primero.
Verifique que parte de su solución no esté bloqueada por un proceso en ejecución.
Por ejemplo, ejecuté "InstallUtil 'en mi servicio de Windows (que normalmente pruebo desde una consola).
Esto bloqueó algunos de mis dlls en la carpeta bin del proyecto de servicio de Windows. Cuando hice una reconstrucción, obtuve la excepción en este problema.
Detuve el servicio de Windows, reconstruí y tuvo éxito.
Verifique el Administrador de tareas de Windows para su aplicación, antes de realizar cualquiera de los pasos avanzados en este problema.
Entonces, cuando escuches pasos, ¡piensa en caballos y no en cebras! (de un amigo estudiante de medicina)
fuente
Tuve el mismo problema Decía que no se podía copiar de bin \ debug a obj .....
Cuando construí un proyecto web, encontré que mi dll estaba en la carpeta bin y no en bin \ debug. Durante la publicación vs estaba buscando archivos en bin \ debug. Así que abrí el archivo de proyecto web en el editor y busqué instancias de bin \ debug y encontré que todos los dll se mencionaron como bin \ debug \ mylibrary.dll. Eliminé todo \ debug de la ruta y publiqué nuevamente. Esta vez vs pudo encontrar todo el dll en la carpeta bin y publicar con éxito.
No tengo idea de cómo se cambió esta ruta en el archivo de proyecto web.
Pasé más de 5 horas depurando esto y finalmente encontré la solución por mi cuenta.
Esta es la respuesta correcta .
fuente
Si nada de lo anterior funciona y está desarrollando una aplicación de consola:
Intente escribir cualquier carácter en Program.cs, luego bórrelo. No tengo idea de por qué esto funciona, pero parece resolver el problema 'No se puede copiar' cada vez.
fuente
Esto es causado comúnmente por Avast.
Por lo general, puedo ejecutar mis proyectos en Release, pero cuando se ejecuta en depuración falla con bastante frecuencia.
Solo agrego una exclusión para mi carpeta de proyectos y el problema parece desaparecer. Supongo que esto también podría ser causado por otro software antivirus.
fuente
Renombrar el archivo .exe y .pub funcionó para mí, pero realmente tedioso. También me enfrento al problema de que no pude editar durante una sesión de depuración. Finalmente fui a la página de configuración de seguridad avanzada, según:
https://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28%22VS.ERR.DEBUG_IN_ZONE_NO_HOSTPROC%3a11310%22%29;k%28TargetFrameworkMoniker-%22.NETFRAMVERSIÓN% % 3dV4.0% 22% 29 & rd = verdadero
Desactivo la selección y luego vuelvo a seleccionar la casilla de verificación "Habilitar configuración de seguridad de ClickOnce". Ha estado libre de problemas durante algunos días ...
fuente
Para mí, esto fue causado por tener un símbolo del sistema abierto en la carpeta de destino (
C:\users\username\source\repos\project\project\bin\debug\app.publish
).No estoy seguro de por qué la DEPURACIÓN requiere acceso a la carpeta de publicación, pero cerrar la ventana de comandos me resolvió el problema.
fuente
En caso de que alguien se encuentre con esto mientras intenta depurar una Prueba unitaria o Ejecutar una prueba unitaria, tuve que eliminar los siguientes dos procesos para que libere el archivo:
fuente
Intenté varias soluciones que proporcionó, pero ocasionalmente todavía recibo este error. Estoy seguro de que mi proceso no se está ejecutando, y cuando trato de eliminar el archivo ejecutable con Internet Explorer, lo elimino de la lista de archivos, pero luego presiono F5 y listo, el archivo está de vuelta. No se ha eliminado en absoluto.
Pero si elimino el archivo a través de TotalCommander, el archivo exe se elimina realmente y puedo construir con éxito el proyecto.
Estoy usando Windows 7 x64 y Total Commander 7.56a 32 bit.
fuente
Ninguna de las otras respuestas funcionó para mí, pero cerrar todas las pestañas abiertas en Visual Studio parece haber resuelto el problema.
fuente
Sé que esta es una pregunta muy antigua, pero recientemente experimenté el error "no se puede copiar de obj a bin" en VS 2012. Cada vez que intenté reconstruir un determinado proyecto, recibí el mensaje. La única solución era hacer una limpieza antes de cada reconstrucción.
Después de mucho investigar, resultó que tenía una declaración de advertencia de pragma incompleta en uno de mis archivos que no impidió que la compilación tuviera éxito, pero que de alguna manera confundió a VS al mantener los archivos bloqueados.
En mi caso, tenía lo siguiente en la parte superior del archivo:
Eso es. Supongo que estaba intentando hacer algo hace un tiempo y me distraje y nunca terminé el proceso, pero las advertencias de VS sobre esa línea en particular se perdieron en la confusión. Finalmente, noté la advertencia, eliminé la línea y la reconstrucción funciona cada vez desde entonces.
fuente
Cuando me enfrenté a un problema similar, lo único que parecía funcionar era:
fuente
Para los servicios de Windows que usan WCF, terminé el proceso de host WFC y funcionó. Odio cuando esto sucede, y sucede al azar a veces.
fuente
Mi solución no tiene nada que ver con versiones, procesos bloqueados, reinicio o eliminación de archivos.
El problema se debió en realidad a la falla de la compilación y a no dar el error correcto. El problema real era un defecto de diseño:
Después de cambiar el alcance de "a" fuera de la función, o no usar "a" después
Task.Factory.StartNew();
, pude construir de nuevo.Esto sucedió al usar VS2012 Update 4 en Windows7x64 sp1.
Mensaje de error:
fuente
He encontrado con VS2013 me sale este error regularmente. Algo que parece funcionar razonablemente bien es realizar una Solución de reconstrucción antes de intentar ejecutar la aplicación. Descubrí que realizar una LIMPIEZA a veces funciona, pero la Solución de reconstrucción parece funcionar de manera más consistente.
fuente