Не удалось скопировать файл Microsoft.SqlServer.Types

После установки пакета Microsoft.SqlServer.Types(Spatial) я получаю ошибки сборки

  • Ошибка 14 Не удалось скопировать "myapp\packages\Microsoft.SqlServer.Types.11.0.1\nativeBinaries\x86\msvcr100.dll" в "bin\SqlServerTypes\x86\msvcr100.dll". Превышено количество попыток 10. Не удалось.
  • Ошибка 26 Не удалось скопировать "myapp\packages\Microsoft.SqlServer.Types.11.0.1\nativeBinaries\x86\SqlServerSpatial110.dll" в "bin\SqlServerTypes\x86\SqlServerSpatial110.dll". Превышено количество попыток 10. Не удалось.
  • Ошибка 15 Не удалось скопировать файл "myapp\Microsoft.SqlServer.Types.11.0.1\nativeBinaries\x86\msvcr100.dll" в "bin\SqlServerTypes\x86\msvcr100.dll". Процесс не может получить доступ к файлу 'bin\SqlServerTypes\x86\msvcr100.dll', потому что он используется другим процессом.
  • Ошибка 27 Не удалось скопировать файл "myapp\packages\Microsoft.SqlServer.Types.11.0.1\nativeBinaries\x86\SqlServerSpatial110.dll" в "bin\SqlServerTypes\x86\SqlServerSpatial110.dll". Процесс не может получить доступ к файлу 'bin\SqlServerTypes\x86\SqlServerSpatial110.dll', потому что он используется другим процессом.

После расследования я обнаружил, что мой рабочий процесс iis блокирует эти файлы. После перезапуска iis успешное создание приложения, но не появляется erros.

Как я могу решить эту проблему???

Ответ 1

Я нашел для этого естественное решение.

Я просто останавливаю IIS до начала компиляции, а затем запускаю IIS после компиляции.

В своем проекте перейдите в меню "Свойства" > "События сборки":

  • Командная строка события предварительной сборки: iisreset/STOP

  • Командная строка события после сборки: iisreset/START

Ответ 2

Похоже, что при удалении пакета NuGet ссылки в csproj не удаляются. Кроме того, я нашел некоторые ссылки на эти DLL в файле, связанном с Git с именем ms-persist.xml, но это, вероятно, не проблема. Поэтому, после удаления всего этого, работа сработала.

Ответ 3

Я столкнулся с этой проблемой и натолкнулся на достойное решение. В моем случае у меня было два проекта, которые запускались и запускались внутри IIS Express каждый раз, когда я начинал отлаживать VS 2013, хотя я выбрал только один проект запуска внутри проводника решений. Я заметил, что каждый раз, когда я останавливал отладку, только одно из моих приложений внутри IIS Express прекращалось, а другое продолжало работать. Последующая команда clean/build покажет ошибку, с которой вы сталкиваетесь для приложения, которое не завершилось. Оказывается, вы можете выбрать несколько проектов запуска в VS, которые расскажут IIS Express о запуске обоих из них при запуске отладки (что было странно уже в моем случае, хотя я выбрал только один проект запуска), а также расскажу о IIS Express для завершения обоих приложений при остановке отладки. Когда все приложения внутри IIS Express завершены, я могу успешно очистить/построить, не получив эту ошибку. Инструкции о том, как установить несколько проектов запуска, можно найти здесь: http://msdn.microsoft.com/en-us/library/ms165413.aspx

Ответ 4

Вы можете перезагрузить и перезапустить пул приложений, который заблокировал указанные файлы как часть процесса развертывания. Перезапуск пула приложений разблокирует файлы, и вы можете их перезаписать.

Для локального развертывания вы можете указать событие предварительной сборки (DefaultAppPool - это имя пула приложений):

c:\Windows\system32\inetsrv\appcmd.exe recycle apppool "DefaultAppPool"

Для автоматического развертывания (например, с сервера сборки) вы можете указать msdeploy перезапустить пул приложений в составе процесса развертывания:

msdeploy.exe -verb:sync -source:recycleApp="Default Web Site/myapp" -dest:auto

Для получения дополнительной информации см. веб-сайт Deploy recycleApp .