c# - solucion - visual studio configuration manager




Visual Studio "No se pudo copiar"... durante la compilación (20)

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

  1. Haga clic derecho en el proyecto web que necesita construir.
  2. Haga clic en las propiedades.
  3. Seleccione la pestaña Build Events en el lado izquierdo.
  4. 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!


  1. Abrir las propiedades del proyecto [menú> proyecto> propiedades]
  2. Elija la pestaña "depurar"
  3. Desmarque "Habilitar el proceso de alojamiento de visual studio"
  4. Iniciar la depuración [F5]
  5. Recibirá una advertencia de seguridad, simplemente "ok". Permite la aplicación en ejecución.
  6. Deja de depurar.
  7. Marque la opción "Habilitar el proceso de alojamiento de Visual Studio", en la pestaña de depuración,
  8. Ahora, intente iniciar la depuración, no verá el error de nuevo

[Trabaja para mi]


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"

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 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();
}

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

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 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 y obj , 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 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 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

  1. Abrir el Administrador de tareas (Ctrl + Alt + Delete)
  2. En la pestaña Rendimiento, seleccione < ProjectNameOfYours.exe >.
  3. Haga clic en Finalizar proceso.
  4. Ahora construir la solución.

Por encima de los pasos resueltos el error permanentemente :)





process