Публикация моего веб-приложения может занять много времени из-за файла .suo - PullRequest
15 голосов
/ 14 сентября 2011

У меня есть проект веб-приложения, который я публикую через Visual Studio 2010 на моем сервере. Моя проблема в том, что это может занять очень много времени, прежде чем он действительно сможет опубликовать его. Может быть, 10 минут ! Это происходит не каждый раз, но очень часто.

Вот краткое изложение того, что у меня есть в консоли Вывод -> Построить, когда я пытаюсь опубликовать:

  • Проект компилируется - ОК
  • Подключение к C: \ Users {пользователь} \ Desktop \ MyProjectTest ... ( это может занять до 10 минут )
  • Файлы публикуются ...

enter image description here

Process Explorer

Когда я открываю 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 Французский с Visual Studio 2010 English . На скриншоте вы видите 10 событий из более чем 2000 событий одного и того же!

enter image description here

Подробнее о моей настройке

Вот некоторая информация, которая может помочь выявить проблему:

  • Мое приложение построено с использованием MVC3
  • У меня есть несколько сторонних библиотек. Некоторые из них подписаны.
  • Я публикую с методом файловой системы.
  • Я попытался опубликовать на своем локальном компьютере, и проблема также существует, так что это не проблема сети между моим компьютером и моим сервером.
  • Я тестировал на Windows 7 x86 & x64 Французское издание
  • My Visual Studio 2010 с пакетом обновления 1 (SP1) - английское издание

ОБНОВЛЕНИЕ 2011-09-23

Теперь я знаю, как решить проблему НО Я не знаю, что является причиной этого. Если я удалю файл **. Suo (на том же уровне, что и файл .sln) и снова открою Visual Studio, публикация будет действительно быстрой. Поэтому повторная инициализация файла .suo, похоже, решает проблему каждый раз, когда публикация замедляется.

Просто чтобы сделать еще один тест, я сделал резервную копию файла .suo, когда публикация была медленной, и удалил его. Теперь публикация быстро. Если я скопирую файл .suo обратно на его место и снова открою Visual Studio, публикация снова будет медленной. Так что, похоже, все указывает на этот файл.

Есть идеи по этому поводу?

Ответы [ 2 ]

0 голосов
/ 05 июня 2014

Я не уверен, вызывает ли это suo-файл, но для меня этот решил проблему.

После компиляции публикация вызовет aspnet_compiler, что на самом деле занимает больше времени, так как генерирует пользовательские dll для всего кода.

Но уточните у VSPackages , есть ли какой-либо пакет, написанный для какой-то интерпретации или около того, который может прервать вашу публикацию.

0 голосов
/ 01 декабря 2011

Попробуйте следующим образом

Чтобы развернуть выпуск на сервере разработки или производственного сервера, выполните следующие действия.

  1. Установите MSI для веб-развертывания.
  2. Щелкните правой кнопкой мыши ваш проект в обозревателе решений и добавьте проект веб-развертывания (здесь я не использую преобразование в веб-приложение или публикацию)
  3. Затем скомпилируйте файлы.Это создаст папку в каталоге вашего проекта, которая будет содержать необходимые файлы для развертывания на сервере.
  4. Создайте резервную копию вашего виртуального каталога и удалите виртуальный каталог, а также файлы из inetpub.
  5. Goto Inet mgr, введите inetmgr при запуске, нажмите enter.
  6. На веб-сайте по умолчанию создайте виртуальный каталог, сохраните развернутые файлы в inetpub и просмотрите их.соответствующий доступ, такой как чтение, запуск сценария и просмотр.Вот и все

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

...