2009-06-17 4 views
42

Я получаю эту ошибку несколько раз при разработке приложений ASP.Net:ASP.Net не может создавать/теневую копию

Cannot create/shadow copy 'XXXXX' when that file already exists 

Где XXXXX является случайной DLL. Обычно DLL является одной из библиотек DLL от корпоративной библиотеки Microsoft, но она варьируется.

Это действительно случайный случай, и это очень расстраивает. Я поеду без ошибок, а затем получаю эту ошибку каждые 10-20 минут.

Я видел несколько решений. Например, this question. Я попытался использовать параметр «Чистое решение», и я также просто перезапустил локальный IIS. Тем не менее, он по-прежнему происходит с той же случайной, но постоянной частотой.

Я также видел много людей уже с помощью этой опции в конфигурационном файле:

<hostingEnvironment shadowCopyBinAssemblies="false" /> 

Однако, другие говорили, что является проблематичным, и она определенно не должна использоваться в производстве.

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

Примечание: Я использую Visual Studio 2008.

+1

Я неоднократно получаю эту ошибку, и я удивлен, что Microsoft все еще не исправила это. –

+2

мы сейчас активно работаем над этим. Учитывая, что это действительно трудно воспроизвести, это затрудняет устранение проблемы. – RickAndMSFT

+1

Я повторно представил ошибку подключения, так что ее можно отслеживать клиентами MS. https://connect.microsoft.com/VisualStudio/feedback/details/786247/can not-create-shadow-copy-xxxxx-when-that-file-уже существует –

ответ

23

следующие обходные приходят из this now defunct connect issue:

  • добавить <hostingEnvironment shadowCopyBinAssemblies="false" /> в <system.web> разделе вашего файла web.config.
  • Перезагрузка Cassini при возникновении проблемы
  • Если вы получили ошибку, остановите отладчик, щелкните правой кнопкой мыши по решению и «очистите решение». Хит F5 для перезапуска отладчика. Это действительно раздражает, так как у меня есть коэффициент отказов 50% для меня, и вы думаете, что не должен быть ручным вариантом ЧИСТОГО РЕШЕНИЯ! Это приложение POS за 1200 долларов США должно очистить его автоматически!
  • Вот еще одно обходное решение, которое может быть более привлекательным для некоторых, любезно предоставлено Гэри Фарром (http://blogs.claritycon.com/blogs/gary_farr/archive/2007/03/09/2888.aspx).
  • Добавьте следующее к предварительно построить события:

    IF EXIST $(TargetPath).LOCKED (del $(TargetPath).LOCKED) ELSE (IF EXIST $(TargetPath) (move $(TargetPath) $(TargetPath).LOCKED))

  • обходной путь, который делает работу для меня, вместо того, чтобы использовать "Build" использовать "Build Solution"

  • После успешная сборка, я считаю до десяти, а затем обновляю свою веб-форму.
  • Я обнаружил, что перерегистрация ASP.NET для IIS проблема «уходит» - с тех пор у меня не было проблемы. В командной строке необходимо запустить следующее:
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i. Это более чем вероятно не сработает для всех - это сложная проблема.
  • перезапуск VS.
  • При очистке решения было выдано несколько предупреждений о файлах, которые невозможно удалить. Эти файлы имели свой набор свойств только для чтения. После установки свойства этих файлов для чтения/записи проблема была решена.
  • Restart IIS

EDIT: Элементы, извлеченные из an old version of the page (любезно archive.org).

+14

Спасибо за ссылку, но немного просеивали. Тот, который работал для меня, был «после успешной сборки, я считаю до десяти, а затем обновляю свою веб-форму». (хотя я только сосчитал до 2) –

+1

Лучшее исправление от этой ссылки для меня было «перезапустить IIS». Я использую локальную IIS вместо Cassini в качестве моего веб-сервера dev. Приветствия. Постскриптум Я использую VS2010, поэтому они все еще не исправили его. – LordScree

0

я получал этот вопрос часто при работе с импортированной DLL, которую мы создали.

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

Кроме того, я не видел проблемы с работы в Visual Studio 2002. 2008 у меня нет этой проблемы, о которой я знаю, а также нет. Используете ли вы более старую VS?

+0

Я использую Visual Studio 2008 –

+0

нормально, не имеет ничего общего с версией. Если вы выполняете восстановление, ваше приложение запускается? – CRice

+0

Да, я «очищаю» решение, перестраиваю и работаю 10-20 минут. Затем я снова получаю ошибку и повторяю. –

1

Откройте свойства проекта, откройте вкладку «Веб» и убедитесь, что параметр «Включить редактирование и продолжение» не установлен.

+1

это работает для меня! – skhro87

0

GO в режиме конструктора, а затем щелкните правой кнопкой мыши и нажмите просмотр в браузере, то проблема исчезнет Анил Мадан

+8

Что работает точно так же, как курить сигарету, и проблема исчезнет – RickAndMSFT

0

Добавьте эти строки в командной событие предварительно построить линию, которая в основном отпирает DLL в Визуальная Студия:

IF EXIST $(TargetPath).LOCKED (del $(TargetPath).LOCKED) 
    ELSE (IF EXIST $(TargetPath) (move $(TargetPath) $(TargetPath).LOCKED)) 

Повторная компиляция и неспособность скопировать DLL-ошибку не произойдет.

1

В моей ситуации только iisreset работал.

39

Подождите где-нибудь между 10-30 секундами и нажмите Обновить. По какой-то причине это всегда работает для меня.

+2

Это сработало, потому что основная причина этой проблемы заключается в попытке получить доступ к веб-странице до завершения процесса сборки в VS. – Zafar

+0

Это интересно, Зафар. У вас есть больше информации об этом? Эта ошибка иногда меня сводит с ума! – joshcomley

+1

Единственное, что я знаю об этом - вы получаете эту ошибку, когда пытаетесь получить доступ к веб-странице, прежде чем файлы зависимых DLL будут завершены для сборки. Ну, это не единственный случай ошибки, я думаю, но этот самый популярный. – Zafar

5

Просто перезапустите визуальную студию, которая сработала для меня.

0

Если вы используете Entity Framework:

Сообщение об ошибке: "Невозможно создать/теневую копию '', когда этот файл уже существует"

Решение: «Подождите несколько секунд и обновите страницу.»

Для получения дополнительной информации, пожалуйста, посетите: Advanced Entity Framework 6 Scenarios for an MVC 5 Web Application (12 of 12)

0

я получал один и тот же вопрос, поместив этот код в web.config работал для меня.

<hostingEnvironment shadowCopyBinAssemblies="false" /> 
0

Вы только что обновили (F5) свою страницу.

0

Очистить и построить его снова. Это помогает мне, и это часто сработало для меня

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