Ho 3 progetti C# A, B e C. Entrambi A e B riferimento C. I riferimenti a C da A e B sono impostati su "Copia locale", il che implica che dopo la creazione di C a C.dll (nella directory di output di C), viene copiato nella directory di output di A o B (qualunque sia in fase di compilazione)Visual Studio 2015 blocca DLL durante il debug
Ho 2 soluzioni, SA e SB. SA contiene A e C e SB contiene B e C. Lancio 2 istanze di Visual Studio 2015. Apro SA in una istanza e SB nell'altra.
Sto trovando che se avvio Debugging (F5) A da SA, e quindi (mentre A è ancora in fase di debug), apporta una modifica a C da SB e tenta di compilare SB, viene visualizzato un errore di compilazione che indica che C .dll non può essere sovrascritto perché è in uso da un altro processo (l'istanza di devenv.exe che esegue SA).
Questo non ha senso per me perché dopo aver compilato da C a C.dll e copiato nella directory di output di A, Visual Studio dovrebbe rilasciare il blocco sul file.
Ho verificato (tramite la finestra di moduli in SA) che la versione di C.dll caricata è quello che è stato copiato nella directory di output di A.
Questo è iniziato che si verificano ieri, quando ho iniziato a usare visivo Studio 2015 (anziché Visual Studio 2013).
Qualcuno ha qualche idea? La mia soluzione attuale è eseguire SA via CTRL-F5 (avvia senza debug), ma questo diventa fastidioso quando voglio eseguire SA e SB in modalità di debug simultaneamente.
Grazie.
UPDATE
ho fatto qualche ricerca in cui la "Modifica e continuazione" caratteristica potrebbe causare il comportamento descritto, e in base a questa pagina https://msdn.microsoft.com/en-us/library/ms164926.aspx> Modifica e continuazione uno permette di effettuare modifiche al codice sorgente, mentre in un sessione di debug e i risultati diventano effettivi senza interrompere il debug, la ricompilazione e il riavvio della sessione di debug (quale problema fondamentale deve essere stato). Con questa funzionalità abilitata, a Visual Studio potrebbe essere richiesto di ricompilare qualsiasi DLL dipendente in qualsiasi momento, il che spiega il blocco.
La mia sfera di cristallo dice che in realtà è il file PDB che è bloccato. –
Suggerimento interessante, tuttavia l'errore di compilazione di SB indica esplicitamente che è la DLL che è bloccata e tenta di eliminare la DLL da Windows Explorer. Forse anche il PDB è bloccato (sebbene sia copiato anche nella directory di output di A). Ad ogni modo, mi sembra che sia stato il passaggio da VS2013 a VS2015 a determinare il comportamento che sto vedendo e spero che ci sia un modo per risolverlo. Errore: impossibile aprire 'C: \ BUILD \ C \ x86 \ obj \ Debug \ C.dll' per la scrittura - 'Il processo non può accedere al file' C: \ BUILD \ C \ x86 \ obj \ Debug \ C .dll 'perché è utilizzato da un altro processo.' – Shea