Публикация моего веб-приложения может занять много времени из-за файла .suo
У меня есть проект веб-приложений, который я публикую через Visual Studio 2010 на моем сервере. Моя проблема в том, что это может занять очень много времени, прежде чем он сможет ее опубликовать. Может быть, 10 минут ! Это не происходит каждый раз, но очень часто.
Вот резюме того, что у меня есть в консоли Output → Build, когда я пытаюсь опубликовать:
- Проект компилируется - ОК
- Подключение к C:\Users {user}\Desktop\MyProjectTest... (это может занять до 10 минут)
- Файлы публикуются...
![enter image description here]()
Проводник процессов
Когда я открываю ProcessExplorer, я вижу, что devenv.exe
берет весь процессор. Когда я открываю этот процесс, я вижу, что задача, которая потребляет весь процессор, - clr.dll!StrongNameSignatureVerification+0x11ee1
. Как только эта задача закончится, через 10 минут задача публикации завершится быстро.
![enter image description here]()
Монитор процессов
С Process Monitor я отслеживал TID clr.dll! StrongNAmeSignatureVerification, и у меня есть много нереданных событий. В течение более 5 минут задача пытается получить доступ к файлу, который у меня нет на моем компьютере. Он ищет файл Microsoft.Build.Task.resources.dll
. Это похоже на то, что задача публикации повторялась снова и снова, и снова что-то, что не существует. Для вашей информации я использую Windows 7 French с Visual Studio 2010 на английском языке. На скриншоте вы видите 10 событий более чем 2000 событий одного и того же!
![enter image description here]()
Дополнительная информация о моей настройке
Вот некоторая информация, которая может помочь выявить проблему:
- Мое приложение построено с помощью MVC3
- У меня есть несколько сторонних DLL. Некоторые из них подписаны.
- Я публикую метод File System.
- Я попытался опубликовать на своем локальном компьютере, и проблема также в том, что это не проблема сети между моим компьютером и моим сервером.
- Я тестировал на французском языке Windows 7 x86 и x64
- Моя Visual Studio 2010 SP1 является английским изданием
ОБНОВЛЕНИЕ 2011-09-23
Теперь я знаю, как решить проблему, но я не знаю, что ее вызывает. Если я удалю файл **. Suo (на том же уровне, что и файл.sln), и я снова открою Visual Studio, публикация будет очень быстрой. Поэтому повторная инициализация файла.suo, похоже, решает проблему каждый раз, когда публикация становится медленной.
Чтобы сделать еще один тест, я сделал резервную копию файла.suo, когда публикация была медленной и удалила ее. Теперь публикация идет быстро. Если я скопирую файл.suo обратно в его положение и снова открою Visual Studio, публикация будет медленной снова. Таким образом, все, кажется, указывает на этот файл.
Любая идея по этому поводу?
Ответы
Ответ 1
Я не уверен, что это файл suo, который вызывает, но для меня this решил проблему.
После компиляции публикация вызовет aspnet_compiler, который на самом деле занимает больше времени, поскольку он создает пользовательскую DLL для всего кода.
Но проконсультируйтесь с VSPackages, есть ли какой-либо пакет, написанный для некоторой интерпретации или так, что может прерывать публикацию.
Ответ 2
Попробуйте этот путь
Чтобы развернуть выпуск на сервере разработки или производства, выполните следующие действия.
- Установить веб-развертывание MSI.
- Щелкните правой кнопкой мыши на своем проекте в проводнике решений и добавьте проект веб-развертывания (здесь я не использую конвертирование в веб-приложение или публикацию).
- Затем скомпилируйте файлы. Это создаст папку в каталоге проекта, которая будет содержать требуемые файлы для развертывания на сервере.
- Возьмите резервную копию своего виртуального каталога и удалите виртуальный каталог, а также файлы из inetpub.
- Goto Inet mgr, введите inetmgr в run hit enter.
- На веб-сайте по умолчанию создайте виртуальный каталог, сохраните развернутые файлы в папке inetpub и браузера.
- Разрешить соответствующий доступ, такой как чтение, запуск script и просмотр. Что все
Отметьте это как ваш ответ, если вы найдете его полезным другим, дайте мне знать...