花些时间分析应用程序加载的程序集。这将对应用程序的加载时间产生最大的影响。如果您有仅在偶尔使用的类型,请将它们移到另一个程序集中。ClickOnce可以优化按需下载程序集,因此减少加载时所需的程序集数量将使其加载更快。
您还可以拥有一种类似的“存根”启动器,其中包含最少的程序集依赖项,动态加载其他程序集(Assembly.Load),并在它们加载后调用真正的处理程序。
请确保您获取 .NET 3.5 SP1,因为在启动领域有显著的性能提升。特别是对于 WPF 应用程序。
至于 Web 服务调用,如果您在编译时生成序列化程序集,可以加快速度。据我所知,Visual Studio 不太聪明,无法自动知道何时生成此文件,但您可以使用 SGEN.EXE 完成。
它会创建一个单独的程序集,例如 MyApp.XmlSerializer.dll,其中包含 Web 服务调用的所有序列化代码。如果没有这个程序集,您的应用程序将尝试失败探测程序集,然后动态生成代码并在内存中编译,这就是为什么第一次 Web 服务调用很慢的原因。