我制作了一个内部使用 Microsoft.mshtml.dll 的 C# BHO。现在要打包此 BHO,我是否还需要分发 Microsoft.mshtml.dll。可以将此 dll 与我的 dll 一起添加吗?任何法律问题?这个 BHO 在开发环境中工作正常,因为 Microsoft.mshtml.dll 存在于 visual studio (C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll) 猜测中,这不会每台机器上的案例。请建议。
它是一个互操作程序集,不包含任何代码。只是声明,从 COM 类型库自动生成。因此重新分配很好。它安装在 GAC 中的唯一原因是因为它是一个 PIA,一个主要的互操作程序集。当您编写一个在您自己的公共(public)方法中公开任何接口(interface)的类库时,您只需要一个 PIA。此类库的客户端还需要对互操作程序集的引用才能使用您的方法,并且它必须与您使用的方法完全相同。这通常很少见,尤其是在 BHO 中。
如果您使用 VS2010 之前的 Visual Studio 版本,则只需将 Copy Local 属性设置为 True 以供程序集引用。重新构建,您将获得一份 DLL 副本,您可以将其与您自己的可执行文件一起部署。
对于 VS2010 及更高版本,您确实希望使用嵌入互操作类型功能。它将接口(interface)声明嵌入到您自己的程序集中,只有您实际使用的那些。这对保持 BHO 的可分配大小更小有很大帮助。并避免部署该互操作程序集的需要。强烈推荐。