我有一个引用并使用 Microsoft.MSHTML 主互操作程序集的 .NET 3.5 WPF 应用程序。在我的开发机器上,应用程序的热启动时间非常快,通常 < 1 秒。但是,在生产机器上大约需要 10 秒(完全不可接受)。
我做了一些研究,发现它们实际上是浮动的两个版本的 MSHTML PIA,一个是完全签名的,一个是未完全签名的或类似的。我在我的开发机器上从 GAC 中检索了完全签名的文件以放在生产机器上,而不是我一直在做的事情是把它放在C:\Program Files\Microsoft.NET\Primary Interop Assemblies
生产机器上。起初,这解决了问题,显然这是一些安全问题,“未完全签名”的 PIA 必须“验证”或类似的一些诸如此类的废话。
然而,现在看来,即使这也不起作用,应用程序仍然需要大约 10 秒的时间来加载(热),几乎所有这些都是由于 MSHTML 参考。
我可以完全控制它将运行的所有生产机器的应用程序和配置(系统映像),因此我可以更改我需要的任何东西以使其正常工作(顺便说一句,所有东西都在运行带有 IE 9 的 Windows 7)。
显然可以生成您自己的 mshtml 互操作包装器,但我不确定如何执行此操作,或者它是否会有所帮助。