Медленный запуск приложения Clickonce winforms после обновления - PullRequest
2 голосов
/ 21 августа 2009

У нас есть приложение winforms, которое развертывается для пользователей с помощью clickonce и использует функцию автообновления.

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

Это не воспроизводится на машинах разработчиков. Между компьютерами пользователей и разработчиков есть 2 основных различия:

  1. Пользователи работают под управлением Windows XP, где разработчики работают под управлением Windows Vista.
  2. Разработчики находятся в том же домене, что и сервер clickonce, тогда как пользователи находятся в другом домене, который имеет двусторонние доверительные отношения с доменом, частью которого является сервер clickonce.

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

Следующая ссылка для кого-то на форумах msdn с такой же проблемой, но не опубликовано решение: http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/5ec061c4-ec6f-4101-98a6-dc8bb5acab60

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

Есть какие-нибудь мысли о том, почему это может происходить, или предложения о том, как решить проблему?

Спасибо.

РЕДАКТИРОВАТЬ 24/08/2009: создал 32-разрядную виртуальную машину под управлением XP и подключил ее к тому же домену, что и пользователи. Проблема не проявляется в виртуальной машине. Похоже, что это устраняет и XP, и членство в домене как источник проблемы. Похоже, что потенциальные виновники оставляют VLAN, конфигурацию системы и уровень исправлений.

1 Ответ

5 голосов
/ 21 августа 2009

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

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

Если вы можете контролировать начальный запуск приложения - проверьте, загружен ли mscorjit.dll, и причина, по которой процесс потребляет значительную нагрузку на ЦП, связана с джиттингом. Также проверьте, потребляет ли какой-либо антивирусный инструмент значительное количество ЦП.

...