2013-04-24 9 views
25

Più volte al giorno ricevo questo errore durante l'esecuzione del mio progetto asp.net mvc4. Non sto chiedendo cosa significa, o come risolverlo, ma cosa sto facendo per causarlo? In realtà sta iniziando a infastidirmi, e se riesco a farlo sparire alterando il mio flusso di lavoro lo farò.Quali sono le cause che l'asp.net non può creare/errore di copia shadow?

Impossibile creare/copia shadow '< assembly>' quando quel file esiste già.

Come accennato in precedenza, il progetto è un'applicazione MVC4. Il mio flusso di lavoro è in genere.

  • Fare un cambiamento (codice o html)
  • Se fosse codice, rigenerare il progetto (tramite scorciatoia da tastiera CTRL + MAIUSC + B)
  • aggiornare la pagina
  • vedere errore fastidioso
    • pulire la soluzione
    • ricostruire soluzione
    • refresh della pagina
  • verificare cambiamento
  • goto 10

(ottengo l'errore con/senza il debugger collegato.) Sarò eternamente grato a chi mi può dare informazioni su come evitare questo errore, e lo farò prontamente tweetta le tue lodi

+0

Sei mai arrivato in fondo a questo? Ancora questo problema nel novembre '14 con Visual Studio 2013 Update 4! – JMK

+1

@ JMK Come suggerisce la risposta accettata, mi sono fermato e contato fino a 3 dopo che la compilazione è stata completata. Di solito non è più un problema perché il live reload si occupa di me per me – Joe

risposta

26

Trovo anche questo fastidioso. Sembra che si verifichi quando si tenta di aggiornare la pagina in un browser prima che la compilazione sia completa . Prova a contare fino a tre-mille dopo che la compilazione è completa e poi aggiorni nel browser. Creare/copia shadow dovrebbe essere fatto da quel punto.

Inoltre, non penso che sia necessario "pulire la soluzione". Credo che una ricostruzione sia una costruzione pulita +, quindi potresti pulirti due volte.

Dopo un po 'di ricerca, ho trovato anche this pre-build event which seems to be popular. (questa soluzione non sembra funzionare, forse lo ha fatto nelle versioni precedenti di quadro VS/.NET)

Aggiornamento: soluzione alternativa

Un altro modo per ottenere da questo è, quando si vede il YSOD , digita semplicemente un URL diverso nel browser e caricalo invece. Quindi fai clic sul pulsante Indietro e aggiorna per arrivare alla pagina che stavi cercando di ricaricare in primo luogo.

+0

Fammi provare un po ':) Per quanto riguarda la pulizia/ricostruzione http://ux.stackexchange.com/questions/11660/why- do-people-clear-the-screen-multiple-times-when-using-a-calculator – Joe

+1

Ottengo spesso questa eccezione di copia shadow quando lavoro velocemente e non pulisco mai. Ricreare e mettere in pausa risolve al 100% se il tempo per me. – danludwig

+1

Ho un SSD installato, quindi dubito che sia latente. – Joe

6

Che cosa sta causando questo errore sembra stia facendo la copia shadow (affermando l'ovvio ...), cioè generando un file in una cartella e poi leggendolo per copiarlo altrove. Penso che ciò che sta causando il problema sta generando o meno quel primo file e quando/come viene copiato, indipendentemente da quali siano le tue azioni. Questo primo file (che sarà copiato in ombra) ha bisogno di rigenerazione, e quindi ri-ombra copiata?

This post dice:

Per impostazione predefinita copia shadow è abilitata su ogni AppDomain creato da ASP.NETTO. Gli assembly caricati verranno copiati in una directory della cache di copia shadow e verranno utilizzati da lì. In modo che il file originale non è bloccato e può essere modificato.

E la loro soluzione è impedire la copia shadow. Ma io non capisco personalmente pienamente ciò copia shadow non nel contesto asp.net, forse qualcuno può chiarire se ci sono alcun effetto lato cattivo per disabilitarlo:

<configuration> 
    <system.web> 
     <hostingEnvironment shadowCopyBinAssemblies="false" /> 
    </system.web> 
</configuration> 

This post parla disabilitando l'indicizzazione e/o antivirus , che suggerirebbe che la creazione del progetto genera nuovi file e l'antivirus (o il servizio di indicizzazione) li accede e li blocca, proprio quando la copia shadow sta tentando di copiare lo stesso identico file.

Ricevo regolarmente il suo errore e non ho mai trovato quale azione specifica che faccio causa l'errore. Eseguo un cambio di codice, premo F5 (pulsante Esegui/Riproduci), visualizzo l'errore nel browser web, chiudo il browser web, premo nuovamente F5. Ora funziona. Non pulisco, non ricostruisco. Tuttavia, con il secondo F5/Run, credo che VS rilevi che non c'è stato alcun cambio di codice, e quindi, forse la copia shadow non viene rifatta? O forse questa volta la copia shadow è temporizzata in modo leggermente diverso e funziona.

+2

Il problema con la disattivazione della copia shadow è che VS non sarebbe in grado di sostituire gli assembly nella build successiva; invece i file di assieme sarebbero in uso dall'applicazione web. La copia shadow crea invece una copia degli assembly da caricare, consentendo di sovrascrivere gli assembly originali in qualsiasi momento. –

1

Ho ricevuto questo errore dopo aver aggiunto una nuova immagine al mio progetto web.

In VS, ogni immagine ha una proprietà denominata "Copia nella directory di output". Ho scelto "Copia sempre", quindi ho ricevuto il messaggio.

L'ho modificato in "Non copiare" - ora è felice.

La speranza che aiuta qualcuno.

Problemi correlati