Приложение WPF медленно запускается

настоящее время приложение @My WPF отображает только экран с некоторыми элементами управления, оно не подключается к БД или обладает другими функциями. Это простой экран интерфейса пользователя.

Когда я проводил тестирование на некоторых компьютерах (WinXP SP2), я обнаружил, что для запуска потребовалось более 15 секунд. Все они были в нашем домене.

Я взял похожий компьютер, только с установленной Windows, и запуск приложения занял 2 секунды.

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

Обобщить приложение запускается быстро (2 секунды) только у одного пользователя, первого, который я тестировал. Все остальные пользователи (доменные или локальные) работают медленно (15 секунд).

Я проверял Улучшение времени запуска приложений WPF но моя проблема требует другого подхода. Кто-нибудь выяснит, что может происходить?

 Lars Truijens21 апр. 2011 г., 22:21
Это может быть затронуто не только приложениями WPF. Это любое приложение .Net, загружающее сборки Code Signed / Authenticode (отличается от подписи строгого имени)
 Nelson Reis06 июл. 2009 г., 15:36
Я развертываю только копирование .EXE и WPFToolkit.dll в папку. Я уже пытался установить .DLL в GAC, но результат был таким же.
 Oskar06 июл. 2009 г., 14:56
Как вы развертываете на своих тестовых компьютерах, вы используете ClickOnce?

Ответы на вопрос(5)

алась в том, что компьютер не был подключен к Интернету, но были некоторые другие устройства (камеры и т. Д.), Которые были подключены через GigE. Запуск каждого .NET-приложения задерживался примерно на 20 секунд.

Решение было довольно простым: просто подключил компьютер один раз к Интернету, запустил любое приложение .NET (первый запуск занял около 7 секунд), и после этого каждый запуск был довольно быстрым, даже если компьютер больше не был подключен к Интернету. Кроме того, мне пришлось отключить протокол TCP / IP V6 (вызвано задержкой 3-5 секунд).

Другое возможное решение - выбрать «Свойства» для «Интернет-протокола версии 4 (TCP / IPv4)», затем выбрать «Дополнительно», выбрать вкладку «WINS». и установите «Отключить NetBIOS через TCP / IP».

Решение Вопроса

Я нашел другое решение этой проблемы в этомдокументация от Microsoft.

Добавление следующей конфигурации в файл app.config также решит проблему:

<configuration>
    <runtime>
        <generatePublisherEvidence enabled="false"/> 
    </runtime>
</configuration>

Таким образом, вам не нужно менять конфигурацию компьютера. Это просто конфигурация приложения.

UPDATE:
Кажется, что .NET 4.0 исправил эту проблему, как описаноВот на MSDN.

 07 июл. 2009 г., 12:11
Кажется, это решение, хотя для меня не ясно из документации, отключает ли это только проверку на отзыв или другие проверки.
 Nelson Reis13 дек. 2012 г., 21:16
@LarsTruijens вы, кажется, правы. Хорошо подмечено.
 13 дек. 2012 г., 20:18
.Net 4.0 и более поздние не нуждаются в этом больше в соответствии сmsdn.microsoft.com/en-us/library/bb629393(v=vs.100).aspx
 Nelson Reis07 июл. 2009 г., 12:48
Да ты прав. Пока у меня есть эти два варианта. Может быть, позже я попытаюсь проверить дополнительную информацию об этом.

Вы проверили, есть ли какие-либо доменные политики, которые могут повлиять на этот сценарий?

 Nelson Reis06 июл. 2009 г., 15:38
В настоящее время я ищу это, но все еще не могу найти ...

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

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

 Nelson Reis06 июл. 2009 г., 14:39
Приложение никак не взаимодействует с сетью или БД. Он просто открывает форму с некоторыми элементами управления. Я строю в режиме релиза. Благодарю.

Система подключена к сети, но не может подключиться к Интернету, поскольку прокси-сервер не настроен? Если это так, перейдите в «Настройки Интернета» (т. Е. «Свойства обозревателя Internet Explorer»), «Дополнительно» и найдите в древовидном представлении «Безопасность» и установите флажок «проверить отозванные сертификаты». или что-то в этом роде (я использую немецкую Windows, поэтому у меня нет английской метки под рукой). Снимите флажок и проверьте снова.

Если это решило проблему, у вас есть одна подписанная сборка не от Microsoft, для которой .NET Framework проверит аннулирование, и время ожидания истекло через 15 секунд. Если вы отключите проверку или настроите интернет-соединение должным образом, вам не придется ждать.

 06 июл. 2009 г., 18:08
@ Нельсон Рейс: Мы столкнулись с проблемой при установке нашего приложения на виртуальную машину, которая не имеет доступа в Интернет. Забавно, что если вы отключите кабель Ethernet (то есть в VMWare отключите устройство Ethernet), он будет работать нормально, потому что система распознает, что нет доступа к Интернету. @Magnus Johansson: я не знаю, к сожалению. Это не является серьезной проблемой для нас, потому что проблема не возникает в системах на местах. Может быть, есть параметр групповой политики, чтобы вы могли развернуть его для своей компании, но я не нашел ничего об отключении его только для приложения.
 06 июл. 2009 г., 18:00
Отличный совет. Но это можно настроить в другом месте, а не в настройках подключения IE? Я имею в виду, например, для каждого приложения.
 Nelson Reis06 июл. 2009 г., 15:48
Это отличный ответ! Это исправило проблему! Компьютеры, на которых будет работать это приложение, не будут иметь доступа к Интернету. Большое спасибо!
 06 июл. 2009 г., 16:29
+1: Хорошее место, Орегон!
 06 июл. 2009 г., 18:10
Кроме того, если я правильно помню, если доступ к Интернету доступен во время установки (т.е. при установке подписанной сборки в GAC), он проверит этот момент и не будет беспокоиться при запуске приложения, даже если вы отключитесь позже.

Ваш ответ на вопрос