我已经制作了一个内部使用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)猜测中,这不会是在每台机器上的情况。请建议。
答案 0 :(得分:7)
它是一个互操作程序集,它不包含任何代码。只是声明,从COM类型库自动生成。因此,重新分配是正常的。它在GAC中安装的唯一原因是它是一个PIA,一个主要的互操作程序集。当您编写一个暴露您自己的公共方法中的任何接口的类库时,您只需要一个PIA。这样一个库的客户端也需要一个对互操作程序集的引用才能使用你的方法,它必须与你使用的完全相同。这种情况很少见,特别是在BHO中。
如果您使用VS2010之前的Visual Studio版本,则只需将Copy Local属性设置为True即可获得程序集引用。重建,您将获得可以与自己的可执行文件一起部署的DLL副本。
对于VS2010及更高版本,您真的想要支持嵌入互操作类型功能。它将接口声明嵌入到您自己的程序集中,只嵌入您实际使用的声明。这有助于保持BHO的可分配大小更小。并且避免了部署该互操作程序集的需要。强烈推荐。