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.