Подтвердить что ты не робот

Что вызывает asp.net Не удается создать/теневую копию ошибки?

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

Этот пост говорит:

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

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

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

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

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

Ответ 3

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

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

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

Надеюсь, что это поможет кому-то.