Aggiornamento: un progetto di esempio che riproduce questo errore è disponibile qui su Microsoft Connect . Ho anche testato e verificato che la soluzione fornita nella seguente risposta accettata funzioni su quel progetto di esempio. Se questa soluzione non funziona per te, probabilmente stai riscontrando un problema diverso (che appartiene a una domanda separata).
Questa è una domanda posta prima, sia qui su Stack Overflow che in altri luoghi, ma nessuno dei suggerimenti che ho trovato finora mi ha aiutato, quindi devo solo provare a fare una nuova domanda.
Scenario: ho una semplice applicazione Windows Form (C #, .NET 4.0, Visual Studio 2010). Ha un paio di moduli di base che la maggior parte degli altri moduli eredita, utilizza Entity Framework (e classi POCO) per l'accesso al database. Niente di speciale, niente multi-threading o altro.
Problema: tutto è andato bene per un po '. Quindi, all'improvviso, Visual Studio non è riuscito a creare quando stavo per avviare l'applicazione. Ho ricevuto l'avviso "Impossibile eliminare il file '... bin \ Debug \ [ProjectName] .exe'. L'accesso al percorso '... bin \ Debug \ [ProjectName] .exe' è negato." e l'errore "Impossibile copiare il file 'obj \ x86 \ Debug \ [ProjectName] .exe' in 'bin \ Debug \ [ProjectName] .exe'. Il processo non può accedere al file 'bin \ Debug \ [ProjectName] .exe "perché viene utilizzato da un altro processo". (Ricevo sia l'avvertimento che l'errore durante l'esecuzione di Ricostruisci, ma solo l'errore durante l'esecuzione di Build - non pensi che sia pertinente?)
Capisco perfettamente cosa dice l'avvertimento e il messaggio di errore: Visual Studio sta ovviamente cercando di sovrascrivere il file exe mentre allo stesso tempo ha un blocco su di esso per qualche motivo. Tuttavia, questo non mi aiuta a trovare una soluzione al problema ... L'unica cosa che ho trovato funzionante è chiudere Visual Studio e avviarlo di nuovo. La costruzione e il lancio quindi funzionano, fino a quando non faccio una modifica in alcuni dei moduli, quindi ho di nuovo lo stesso problema e devo ricominciare ... Piuttosto frustrante!
Come accennato in precedenza, questo sembra essere un problema noto, quindi ci sono molte soluzioni suggerite. Elencherò solo ciò che ho già provato qui, così le persone sanno cosa saltare:
- Crea una nuova soluzione pulita e copia i file dalla vecchia soluzione.
Aggiungendo quanto segue all'evento pre-build del progetto:
if exist "$(TargetPath).locked" del "$(TargetPath).locked" if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
Aggiungendo quanto segue alle proprietà del progetto (file .csproj):
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
Tuttavia, nessuno di loro ha funzionato per me, quindi puoi probabilmente capire perché sto iniziando a sentirmi un po 'frustrato. Non so dove altro cercare, quindi spero che qualcuno abbia qualcosa da darmi! È un bug in VS, e se è così c'è una patch? O ho fatto qualcosa di sbagliato, ho un riferimento circolare o simile, e in tal caso come potrei scoprirlo?
Eventuali suggerimenti sono molto apprezzati :)
Aggiornamento: Come menzionato nel commento qui sotto, ho anche verificato usando Process Explorer che in realtà è Visual Studio che sta bloccando il file.