Взгляните на эти ссылки:
Они могут помочь. Возможно, конфигурация вашей системы означает, что платформа .NET выполняет много дополнительной работы для проверки сборки. В этом случае вы можете настроить его не так придирчиво.
Загрузка подписанных сборок определенно будет медленнее , чем неподписанные копии, потому что подпись должна быть проверена, но этим можно пренебречь.
Переход с 5 секунд на 90 секунд ?? Думаю нужно связаться с автором сборки и спросить, меняли ли они только подпись: -)
Попробуйте запустить приложение из Visual Studio с помощью «Step over». Это запустит код, перейдя через каждое приложение, чтобы вы могли проверить, что занимает так много времени. Однажды у меня было это, и выяснилось, что мой sql-сервер действительно сломался.
Другой способ узнать, почему это занимает так много времени, - это разместить точки останова, разбросанные по загрузочному коду, и посмотреть, в чем узкое место. Если приложение занимает 90 секунд до , оно сначала нравится вашему , возможно, что-то с XCeed или загрузка подписанных сборок.
Кстати, я знаю, что есть способы лучше профилировать ваше приложение, но этот быстрый и грязный способ работает довольно хорошо и эффективно для отладки таких проблем.
Возможно, подписанные сборки не имеют NGEN, а неподписанные.
Я предполагаю, что у вас установлены настройки безопасности таким образом, чтобы сертификаты сборок проверялись. Таким образом, он, вероятно, пытается получить доступ к Интернету для проверки сертификата, а затем ожидает тайм-аута (30 секунд - ОЧЕНЬ типичное значение тайм-аута).
Вы можете проверить это, если посмотрите, что происходит за эти 30 секунд. Чтобы мое предположение было правдой, за эти 90 секунд должно быть мало использования процессора и мало обращений к жесткому диску. Если у вас высокая загрузка процессора или ваш жесткий диск, то это что-то другое.
Кстати: Другой вариант - если ваш жесткий диск полностью заполнен, а сборки ЧРЕЗВЫЧАЙНО фрагментированы (но 90 секунд - это больше, чем я когда-либо слышал в тот случай).
Сообщение Джейсона Эванса содержит ответ, но в виде ссылки. Я думал, что было бы хорошо опубликовать фактическое решение здесь:
Создайте файл appname.exe.config в той же папке, что и исполняемый файл (где appname - это имя вашего исполняемого исполнения; для разработки это будет в отладке папки вывода). Это показывает файл XML, который предполагает, что у вас нет других записей в основном файле конфигурации; Если у вас уже есть файл, я предполагаю, что вы просто добавите новые разделы / текст по мере необходимости:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<generatePublisherEvidence enabled="false" />
</runtime>
</configuration>