Domanda Cosa provoca l'asp.net Impossibile creare / shadow copy error?


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ò.

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

Come ho detto sopra, il progetto è un'applicazione MVC4. Il mio flusso di lavoro è in genere.

  • Apporta una modifica (codice o html)
  • Se si trattava di codice, ricostruire il progetto (usando la scorciatoia da tastiera CTRL + MAIUSC + B)
  • ricarica la pagina
  • vedi fastidioso errore
    • pulire la soluzione
    • ricostruire la soluzione
    • aggiorna pagina
  • verificare il cambiamento
  • goto 10

(Ricevo l'errore con / senza il debugger allegato.) Sarò eternamente grato a chiunque possa informarmi su come evitare questo errore e prontamente twitterà le tue lodi


25
2018-04-24 16:17


origine


risposte:


Trovo anche questo fastidioso. Sembra che accada quando si tenta di aggiornare la pagina in un browser prima che la build sia completamente completare. 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 ricerche, ho anche trovato questo evento pre-compilazione che sembra essere popolare. (questa soluzione non sembra funzionare, forse ha funzionato nelle versioni precedenti del framework VS / .NET)

Aggiornamento: soluzione alternativa

Un altro modo per ottenere ciò è che, quando vedi YSOD, scrivi semplicemente un URL diverso nel browser e caricalo. Quindi fai clic sul pulsante Indietro e aggiorna per arrivare alla pagina che stavi cercando di ricaricare in primo luogo.


26
2018-04-24 16:52



Quello che sta causando questo errore sembra fare la copia shadow (affermando l'ovvio ...), cioè generare un file in una cartella e poi leggerlo 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?

Questo post dice:

Per impostazione predefinita, la copia shadow è abilitata su tutti i domini app creati da ASP.NET. 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 è prevenire la copia shadow. Ma non capisco a livello personale ciò che fa la copia shadow nel contesto di asp.net, forse qualcuno può chiarire se ci sono degli effetti collaterali negativi nel disabilitarlo:

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

Questo post parla di disabilitazione dell'indicizzazione e / o dell'antivirus, il 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.

Ottengo 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.


6
2018-06-18 10:02



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

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

L'ho cambiato in "Do not Copy" - ora è felice.

Spero che aiuti qualcuno.


1
2018-04-11 15:33