6

我制作了一个在内部使用 Microsoft.mshtml.dll 的 C# BHO。现在要打包这个 BHO,我还需要分发 Microsoft.mshtml.dll。用我的 dll 添加这个 dll 可以吗?有什么法律问题吗?这个 BHO 在开发环境中运行良好,因为 Visual Studio 中存在 Microsoft.mshtml.dll (C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll) 猜测,这不会每台机器上的案例。请建议。

4

1 回答 1

7

它是一个互操作程序集,它不包含任何代码。只是声明,从 COM 类型库自动生成。因此,重新分配很好。它安装在 GAC 中的唯一原因是因为它是一个 PIA,一个主要的互操作程序集。当您编写一个在您自己的公共方法中公开任何接口的类库时,您只需要一个 PIA。此类库的客户端还需要对互操作程序集的引用才能使用您的方法,并且它必须与您使用的完全相同。这通常很少见,尤其是在 BHO 中。

如果您使用的是 VS2010 之前的 Visual Studio 版本,那么只需将 Copy Local 属性设置为 True 以获取程序集引用。重建,您将获得 DLL 的副本,您可以将其与您自己的可执行文件一起部署。

对于 VS2010 及更高版本,您真的希望支持 Embed Interop Type 功能。它将接口声明嵌入到您自己的程序集中,只有您实际使用的那些。这有助于保持 BHO 的可分配大小更小。并且避免了部署该互操作程序集的需要。强力推荐。

于 2013-09-27T14:06:10.027 回答