C#/.NET 4.0 中新的 NoPIA 和类型等效功能是否意味着不再需要 Microsoft.mshtml.dll

2024-01-21

我正在维护一个基于 WPF 的应用程序,其中包含一个基于 WinForms 的 WebBrowser 控件,该控件基于 IE Web 浏览器控件。当我们部署时,我们还必须提供微软.mshtml.dll并为我们的 ClickOnce 发布流程执行一些自定义配置,以便正常运行。

我很好奇,随着新的NoPIA https://learn.microsoft.com/en-us/archive/blogs/mshneer/nopia-blog-posts and 类型等效 https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/dd997297%28v=vs.100%29特点和dynamic https://web.archive.org/web/20190126105847/http://geekswithblogs.net/sdorman/archive/2008/11/16/c-4.0-dynamic-programming.aspxC# 4.0 中的类型功能是否可以预期,如果我们升级,我们可以删除对微软.mshtml.dll集会?如果是这样,这不仅会大大减少我们的部署规模,而且还会简化我们的发布过程。

据我了解,我们应该能够将通常自动生成的类型嵌入到 COM 类型的额外程序集中,例如 Visual Studio 的 MapPoint 控件。我不知道这是否也适用于微软.mshtml.dll甚至在最简单的情况下如何完成。如果有人可以解释这些新功能对依赖 COM 互操作的项目的实际影响,尤其是微软.mshtml.dll组装它对我有很大的帮助。


当然,这就是全部内容。将解决方案导入 VS2010,“项目 + 属性”、“应用程序”选项卡,将“目标框架”更改为 .NET 4.0。在“解决方案资源管理器”窗口中打开“引用”节点,选择 Microsoft.mshtml 引用并将其“嵌入互操作类型”属性设置为 True。对于以 4.0 为目标的新项目,它会自动打开

这适用于您在 COM 选项卡中选择的任何 COM 类型库以及您在 .NET 选项卡中选择的任何 PIA。仅在构建时需要类型库,您不必再部署互操作库或 PIA。当然,实际的 COM 服务器必须仍然存在于目标计算机上。

新的动态关键字以及可选和命名参数功能并不相关,它们只是在使用设计用于脚本语言的 COM 服务器时更容易编写更清晰的代码。 Mshtml 已经很干净了,Office interop 就是最好的例子。

另请注意,当您利用 Windows 窗体的 HtmlDocument 和 HtmlElement 类时,往往很容易避免对 mshtml 的依赖。这是通过使用 WebBrowser.Document 属性开始的。然而,它们并没有包含所有 mshtml 功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#/.NET 4.0 中新的 NoPIA 和类型等效功能是否意味着不再需要 Microsoft.mshtml.dll 的相关文章

随机推荐