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

20

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

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

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

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

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

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

Я развертываю только копирование .EXE и WPFToolkit.dll в папку. Я уже пытался установить .DLL в GAC, но результат был таким же. Nelson Reis
Как вы развертываете на своих тестовых компьютерах, вы используете ClickOnce? Oskar
Это может быть затронуто не только приложениями WPF. Это любое приложение .Net, загружающее сборки Code Signed / Authenticode (отличается от подписи строгого имени) Lars Truijens

Ваш Ответ

5   ответов
0

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

В настоящее время я ищу это, но все еще не могу найти ... Nelson Reis
0

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

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

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

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

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

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

12

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

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

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

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

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

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

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

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

@LarsTruijens вы, кажется, правы. Хорошо подмечено. Nelson Reis
Кажется, это решение, хотя для меня не ясно из документации, отключает ли это только проверку на отзыв или другие проверки.
.Net 4.0 и более поздние не нуждаются в этом больше в соответствии сmsdn.microsoft.com/en-us/library/bb629393(v=vs.100).aspx
Да ты прав. Пока у меня есть эти два варианта. Может быть, позже я попытаюсь проверить дополнительную информацию об этом. Nelson Reis

Похожие вопросы