2013-04-24 3 views
25

Несколько раз в день я получаю эту ошибку при запуске моего проекта asp.net mvc4. Я не спрашиваю, что это значит, или как это исправить, но что я делаю, чтобы вызвать это? Это действительно начинает меня бигать, и если я могу заставить его уйти, изменив свой рабочий процесс, я это сделаю.Что вызывает asp.net Не удается создать/теневую копию ошибки?

Невозможно создать/теневую копию '< assembly>', когда этот файл уже существует.

Как я уже упоминал выше, проект представляет собой приложение MVC4. Обычно мой рабочий процесс.

  • Внести изменения (код или HTML)
  • Если бы это был код, перестроить проект (с помощью комбинации клавиш CTRL + SHIFT + B)
  • обновить страницу
  • см досадную ошибку
    • очистки раствора
    • перестроить решение
    • обновления страницы
  • проверить Смените
  • Готы 10

(я получаю ошибку с/без прилагается отладчик.) Я буду вечно благодарен всем, кто может сообщить мне о том, как избежать этой ошибки, и буду быстро чирикать ваши похвалы

+0

Вы когда-нибудь дошли до конца? Все еще эта проблема в ноябре '14 с обновлением Visual Studio 2013 Update 4! – JMK

+1

@JMK Как сказал принятый ответ, я просто остановился и подсчитал до 3 после завершения сборки. Это обычно не проблема, потому что живая перезагрузка заботится об этом для меня – Joe

ответ

26

Я нахожу это раздражающим тоже. Кажется, это происходит, когда вы пытаетесь обновить страницу в браузере до сборки полностью завершено. Попробуйте подсчитать до трех тысяч после завершения сборки, а затем обновите ее в браузере. Создать/теневую копию следует сделать с этой точки.

Я также не думаю, что вам нужно «очистить решение». Я считаю, что восстановление - это чистая + сборка, поэтому вы можете дважды чистить.

После небольшого исследования я также нашел this pre-build event which seems to be popular. (это обходной путь, кажется, не работает, возможно, это было в предыдущих версиях базы/.NET VS)

Update: альтернативное решение

Другой способ получить на это, когда вы видите YSOD , просто введите другой URL-адрес в браузере и загрузите его. Затем нажмите кнопку «Назад» и обновите, чтобы перейти на страницу, которую вы пытались перезагрузить.

+0

Позвольте мне попробовать это немного :) Что касается чистых/перестроек http://ux.stackexchange.com/questions/11660/why- do-people-clear-the-screen-multiple-times-when-using-a-calculator – Joe

+1

Я часто получаю это исключение из тени, когда я работаю быстро, и я никогда не чищу. Перестроить и приостановить решает его на 100%, если настало время для меня. – danludwig

+1

У меня установлен SSD, поэтому я сомневаюсь, что это латентность. – Joe

6

Что вызывает эта ошибка, кажется, делает теневую копию (с указанием очевидного ...), то есть генерирует файл в одной папке, а затем читает его, чтобы скопировать его в другое место. Я думаю, что причиной этого является генерация или не первый файл, и когда/как он копируется, независимо от ваших действий. Этот первый файл (который будет теневым копированием) нуждается в регенерации и, следовательно, повторной теневой копии?

This post говорит:

По умолчанию теневая копия включена на каждый AppDomain созданный ASP.СЕТЬ. Снятые сборки будут скопированы в каталог кэша теневого копирования и будут использоваться оттуда. Так что исходный файл не заблокирован и может быть изменен.

И их исправление заключается в предотвращении теневой копии. Но я не Personnally полностью понять, что теневая копия имеет в контексте asp.net, может быть, кто-то может уточнить, если есть какие-либо плохие побочный эффект его отключить:

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

This post переговоры об отключении индексации и/или антивирус , что предполагает, что создание проекта создает новые файлы, а антивирус (или служба индексирования) обращается к ним и блокирует их, только когда теневая копия пытается скопировать тот же самый файл.

Я регулярно получаю его ошибку и никогда не обнаружил, какое конкретное действие вызывает ошибка. Я делаю изменение кода, нажмите F5 (кнопка Run/Play), получите сообщение об ошибке в веб-браузере, закройте веб-браузер и снова нажмите F5. Теперь он работает. Я не чищу, я не перестраиваю. Тем не менее, со вторым F5/Run, я считаю, что VS обнаруживает, что не было изменения кода, и поэтому, возможно, теневая копия не переделана? Или, может быть, на этот раз теневая копия приурочена немного по-другому, и она работает.

+2

Проблема с отключением теневой копии заключается в том, что VS не сможет заменить сборки в следующей сборке; вместо этого файлы сборки будут использоваться веб-приложением. Теневая копия создает копию сборок для загрузки, позволяя перезаписывать исходные сборки в любое время. –

1

Я получил эту ошибку после добавления нового изображения в свой веб-проект.

В VS каждое изображение имеет свойство «Копировать в выходной каталог». Я выбрал «Копировать всегда», затем получил сообщение.

Я заменил его на «Не копировать» - теперь он счастлив.

Надежды, которые помогают кому-то.

Смежные вопросы