c# - solucion - Visual Studio "No se pudo copiar"... durante la compilación
generar ejecutable visual studio 2010 c# (30)
Sigo recibiendo este error durante la compilación de mi proyecto VS2012 C #
Error 41 Could not copy "obj/Debug/WeinGartner.WeinCad.exe" to
"bin/Debug/WeinGartner.WeinCad.exe".
Exceeded retry count of 10. Failed.
Error 42 Unable to copy file "obj/Debug/WeinGartner.WeinCad.exe" to
"bin/Debug/WeinGartner.WeinCad.exe". The process cannot access the file
''bin/Debug/WeinGartner.WeinCad.exe'' because it is being used by another
process.
Ahora he descubierto que matar el proceso
Weingartner.WeinCad.vhost.exe
Funciona (a veces) pero esto me está poniendo de los nervios. ¿Alguna forma de evitar que esto suceda?
Mis ajustes del depurador son
Excepción
En algunos casos en Visual Studio cuando usted (Build || Rebuild) además de ejecutar IISExpress se enfrentó a esta excepción:
No se puede copiar el archivo "obj / Debug / YourProjectName.dll" a bin / YourProjectName.dll ". El proceso no puede acceder al archivo ''bin / YourProjectName.dll'' porque otro proceso lo está utilizando
Solución
- Haga clic derecho en el proyecto web que necesita construir.
- Haga clic en las propiedades.
- Seleccione la pestaña Build Events en el lado izquierdo.
- En la línea de comandos de eventos de Pre-compilación, pegue estas 2 líneas:
tasklist /fi "imagename eq iisexpress.exe" |find ":" > nul if errorlevel 1 taskkill /f /im "iisexpress.exe"
Eres bueno 2 GO!
- Abrir las propiedades del proyecto [menú> proyecto> propiedades]
- Elija la pestaña "depurar"
- Desmarque "Habilitar el proceso de alojamiento de visual studio"
- Iniciar la depuración [F5]
- Recibirá una advertencia de seguridad, simplemente "ok". Permite la aplicación en ejecución.
- Deja de depurar.
- Marque la opción "Habilitar el proceso de alojamiento de Visual Studio", en la pestaña de depuración,
- Ahora, intente iniciar la depuración, no verá el error de nuevo
[Trabaja para mi]
Agregue el evento previo a la compilación de su proyecto maestro taskkill / f / fi "pid gt 0" / im "YourProcess.vshost.exe"
Asegúrese de cerrar todas las instancias wcfSvcHost e intente nuevamente. ¡Funcionó para mí!
Citar:
Una solución alternativa es poner esto en la propiedad de línea de comando de eventos de Pre-compilación del> proyecto (en la pestaña Eventos de compilación):
Fragmento de código
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
Creo que lo resolví eliminando la marca de verificación para Break all processes when one process breaks
en las opciones de Depuración (primera captura de pantalla de la operación -> segunda opción).
Ha estado construyendo / funcionando bien por un tiempo desde que lo deseleccioné.
Estoy usando los controles MySQL NET Connector y DevExpress en mi proyecto. Puede ser que uno de ellos no estuviera desechando conexiones, enlaces, etc. debido a la activación de esta bandera.
EDITADO: ¡definitivamente funciona! No más "No se puede copiar el archivo" y no hay más errores del diseñador de formularios.
Debes desactivar tu antivirus (especialmente si es un Avast) e intentarlo de nuevo. Me ayudó. El problema es que el depurador / constructor crea el archivo .exe identificado como una amenaza por Avast y, por lo tanto, eliminado justo antes de que VS pueda ejecutarlo.
El .vhost.exe es un proceso de depuración, por lo que parece que el proceso que se está depurando no se ha cerrado correctamente. Lo más probable es que tenga un error que lo mantenga vivo y que no esté deteniendo el proceso de depuración correctamente. Hay opciones para desvincularse del proceso cuando hace clic en "detener la depuración" en lugar de matar al depurador, por lo que quizás tenga ese conjunto.
Pero ese es el problema: el OS está bloqueando (es decir, aún se está utilizando) el archivo que está intentando copiar, por lo que impide la copia. Asegúrate de que el archivo sea gratuito y puedas copiarlo.
En Visual Studio Premium 2013 (Actualización 3), resolví esto con una línea de compilación previa:
(if exist "$(TargetDir)*old.pdb" del "$(TargetDir)*old.pdb") & (if exist "$(TargetDir)*.pdb" ren "$(TargetDir)*.pdb" *.old.pdb)
Esto elimina con gracia cualquier archivo PDB antiguo (si es posible), luego renombra todo lo que queda con una extensión .old.pdb
. Un efecto secundario agradable es que si el PDB anterior aún está bloqueado, simplemente agrega otra pieza antigua al nombre del archivo, y todos se limpiarán la próxima vez que reinicie Visual Studio y realice una compilación.
Por ejemplo, la sesión de compilación / depuración 1 deja MyProject.pdb
bloqueado.
La próxima vez que construyas:
MyProject.pdb
-> MyProject.old.pdb
Luego, se inicia la sesión de compilación / depuración 2, y tanto MyProject.pdb
como MyProject.old.pdb
aún están bloqueados:
MyProject.old.pdb
-> MyProject.old.old.pdb
MyProject.pdb
-> MyProject.old.pdb
Finalmente, al reiniciar Visual Studio y realizar una compilación nueva se eliminarán ambos y se continuará el proceso de la forma habitual.
En mi caso, fue el corredor Resharper Unit Tests (además de las pruebas NUnit, nunca tuve tal problema con MsTests). Después de matar el proceso, fue capaz de reconstruir el proceso, sin reiniciar el sistema operativo o VS2013
Es porque has cerrado tu aplicación, pero aún se está ejecutando en segundo plano.
Solución temporal:
- Vaya a Administrador de tareas ( Ctrl + Alt + Esc ).
- Vaya a la pestaña Procesos y busque "YourProjectName.exe".
- Marque "Mostrar procesos de todos los usuarios" si no puede encontrar su proceso.
- Finaliza el proceso.
Solución permanente: tienes que cerrar tu aplicación a través de la codificación. Aquí está el código ...
System.Windows.Forms.Application.Exit();
Debe introducir este código en el evento de cierre del formulario en todas sus formas. Ejemplo:
private void frm_menu_FormClosing(object sender, FormClosingEventArgs e)
{
System.Windows.Forms.Application.Exit();
}
Esta pregunta fue el primer resultado al buscar el siguiente error:
No se pudo copiar el archivo "..." porque no se encontró.
al construir en Visual Studio 2013 (Actualización 3).
Solución: desinstalación de "Productivity Power Tools" en Visual Studio 2013.
https://connect.microsoft.com/VisualStudio/feedback/details/533411
He notado algunas respuestas que resolvieron mi problema, PERO, en caso de que alguien tenga el mismo problema que yo.
SI ESTÁS EJECUTANDO UNA APLICACIÓN DE CONSOLA: ANTES DE HACER ALGO MÁS.
Asegúrese de haber cerrado todas las ventanas de la consola que se hayan abierto desde una compilación anterior. Por ejemplo, solo estaba probando un código en una aplicación de consola, no me di cuenta de que la ventana de la consola de una de las veces que ejecuté mi programa estaba abierta. Durante esa sesión estaba haciendo la depuración, la ventana se empujó hacia atrás y no pude verla. Solo digo, este podría ser su problema, así que asegúrese de que no sea el problema.
La respuesta de @ Geoff ( https://.com/a/25251766/3739540 ) es buena, pero arroja el código de error 1 en la recompilación.
Esto es lo que funcionó para mí (2> nul 1> nul en el final + salida 0):
(if exist "$(TargetDir)*old.pdb" del "$(TargetDir)*old.pdb") & (if exist "$(TargetDir)*.pdb" ren "$(TargetDir)*.pdb" *.old.pdb) 2>nul 1>nul
(if exist "$(TargetDir)*old.dll" del "$(TargetDir)*old.dll") & (if exist "$(TargetDir)*.dll" ren "$(TargetDir)*.dll" *.old.dll) 2>nul 1>nul
exit 0
Lo he solucionado matando a IISExpress en el administrador de tareas
Matar el proceso (s) vstest.executionengine.exe resuelve este problema el 90% del tiempo para mí. Si eso no funciona, también se eliminará QTAgent32.exe y luego se eliminarán las carpetas / bin y / obj para el proyecto en cuestión.
Esta es la parte más irritante de mi jornada laboral. :)
Matar el proceso w3wp.exe (IIS) a menudo lo resolverá.
En general, puede conocer el proceso que tiene el bloqueo en el archivo navegando a la carpeta bin e intentando eliminarlo. El mensaje de error que aparecerá, en caso de que otro proceso lo esté utilizando, contendrá el nombre del proceso que debe eliminarse.
Me enfrenté con el mismo problema en VS 2012 Versión 11.0.60610.01 Actualización 3 en Windows 8
No había ventanas de diseñador abiertas y el proyecto era una aplicación de consola simple.
La eliminación del proceso vshost que accede al archivo no funciona la mayor parte del tiempo ya que el proceso no accede al archivo.
La solución más sencilla que funciona y toma la menor cantidad de tiempo es eliminar el proyecto de la solución, crear otro proyecto en la solución y luego agregar el original.
Es un irritante y una pérdida de tiempo, pero es la menos costosa de todas las demás opciones que conozco.
Espero que esto ayude...
Me he encontrado con mensajes de error similares en Visual Studio 2013.
Sobre todo, he descubierto que esta situación se ha producido cuando se detuvo un proceso de depuración debido a una excepción.
Cuando clean + build no resolvió este problema para mí, tuve éxito haciendo lo siguiente:
- Cierre de visual studio
- Eliminando las carpetas
bin
yobj
, y - Reapertura de Visual Studio.
Este "error" ha existido desde Visual Studio 2003.
Finalmente, también encontré que a menudo puedo superar este problema simplemente cambiando el nombre del archivo ejecutable y luego eliminándolo.
Mi contribución de 10 centavos.
Todavía tengo este problema ocasionalmente en la actualización 2 de VS 2015.
Encontré que cambiar el destino de compilación resuelve el problema.
Intente esto: si está en DEBUG, cambie a RELEASE y compile, luego vuelva a DEBUG. El problema se ha ido.
Stefano
No me di cuenta de que todavía tenía el depurador adjunto e intentaba construir en la misma instancia de Visual Studio. Una vez que detuve el depurador pude construir.
No puedo dar una solución para evitar que esto suceda, pero al menos puede RENOMBRAR el archivo bloqueado (Windows Explorer o la ventana de comandos clásica) y luego compilar / compilar. No es necesario reiniciar o reiniciar VS201x. Con algo de experiencia, puede agregar una secuencia de comandos de compilación previa para eliminar archivos antiguos o renombrarlos y dejarlos fuera del camino en caso de que haya un bloqueo.
Para mí, fue el antivirus Avast el que Visual Studio no podía escribir / leer / ejecutar. Así que tuve que agregar la carpeta Visual Studio 2010/2012 a la lista de exclusión de antivirus. Y justo después de eso baam ... funciona.
Por fin me lo arreglo. Por qué no podemos continuar con la depuración después de la primera depuración porque el primer exe de depuración aún se está ejecutando. De modo que, después de la primera depuración, debe ir a Administrador de tareas -> pestaña Procesar -> [nombre de su proyecto exe] finalizar el proceso exe.
esto funciona para mi :)
Pude solucionar este problema (VS 2010) a través del suministro previo a la acción de construcción previa;
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
Si está depurando plantillas T4 , esto sucede todo el tiempo. Mi solución (antes de que MS arregle esto) sería simplemente matar este proceso:
Administrador de tareas -> Usuario -> T4VSHostProcess.exe
Este proceso solo aparece cuando se depura una plantilla T4, no cuando se ejecuta una.
Si ninguna de las respuestas funciona, intente esta simple comprobación. Busque cualquier MSbuild.exe ejecutando y manteniendo su proyecto EXE. Mata a MSBuild.exe y deberías estar listo.
Siga los pasos a continuación
- Abrir el Administrador de tareas (Ctrl + Alt + Delete)
- En la pestaña Rendimiento, seleccione < ProjectNameOfYours.exe >.
- Haga clic en Finalizar proceso.
- Ahora construir la solución.
Por encima de los pasos resueltos el error permanentemente :)
Ver esta otra respuesta . Básicamente, podría tener los procesos de MSBuild.exe ejecutándose en los archivos de recursos que consumen el fondo. Si tiene alguna tarea de creación previa o posterior que haga que se inicie un MSBuild a través de la línea de comandos, intente agregar el indicador "/ nr: false" a este comando. Pero nuevamente, vea la respuesta anterior para detalles más específicos.