Время начала ClickOnce из ссылки меню «Пуск» - PullRequest
5 голосов
/ 29 июня 2009

У меня большое приложение (190 МБ в 600 файлах), развернутое с помощью clickonce 3.5. После установки этого приложения я запускаю его по ссылке, расположенной в меню «Пуск», но на отображение заставки уходит более 4-12 секунд. Когда это приложение запускается из .exe файла, заставка появляется через 1 сек. Мое приложение не использует автоматические обновления (обновление Clickonce выполняется вручную из исходного кода)

Я попытался профилировать это приложение с помощью dotTrace, чтобы выяснить, что занимает так много времени при запуске, и выяснить, что

IActContext System.Deployment.Internal.Isolation.IsolationInterop.CreateActContext(IDefinitionAppId)

занимает много времени

Вот целое поддерево:

36,71% SetDomainManager - 12972 ms - 0 calls - System.AppDomain.SetDomainManager(Evidence, Evidence, IntPtr, Boolean)
  18,52% CreateActivationContext - 6542 ms - 0 calls - System.Deployment.Internal.Isolation.Manifest.CmsUtils.CreateActivationContext(String, String [], Boolean, ApplicationIdentity &, ActivationContext &)
    18,52% ActivationContext..ctor - 6542 ms - 0 calls - System.ActivationContext..ctor(ApplicationIdentity)
      18,52% CreateFromName - 6542 ms - 0 calls - System.ActivationContext.CreateFromName(ApplicationIdentity)
        18,52% CreateActContext - 6542 ms - 0 calls - System.Deployment.Internal.Isolation.IsolationInterop.CreateActContext(IDefinitionAppId)
  18,19% SetupApplicationHelper - 6429 ms - 0 calls - System.AppDomain.SetupApplicationHelper(Evidence, Evidence, ApplicationIdentity, ActivationContext, String [])
    18,19% DetermineApplicationTrust - 6429 ms - 0 calls - System.Security.HostSecurityManager.DetermineApplicationTrust(Evidence, Evidence, TrustManagerContext)
      18,10% get_ActivationContext - 6396 ms - 0 calls - System.Runtime.Hosting.ActivationArguments.get_ActivationContext()
        18,10% CreateFromName - 6396 ms - 0 calls - System.ActivationContext.CreateFromName(ApplicationIdentity)
          18,10% CreateActContext - 6396 ms - 0 calls - System.Deployment.Internal.Isolation.IsolationInterop.CreateActContext(IDefinitionAppId)
      0,09% DetermineApplicationTrustInternal - 33 ms - 0 calls - System.Security.Policy.ApplicationSecurityManager.DetermineApplicationTrustInternal(ActivationContext, TrustManagerContext)

Как я могу сократить это время запуска моего приложения? Это очень важно, потому что иногда пользователю приходится ждать более 12 секунд, чтобы увидеть заставку

1 Ответ

1 голос
/ 29 июня 2009

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

...