我在调用OFFICE的COM Microsoft.Office.Interop.PowerPoint的时候,在VS2005中添加引用成功,但是放到别人没有装PowerPoint的电脑中,缺少DLL无法引用。
我想把这个Microsoft.Office.Interop.PowerPoint.DLL跟程序打包在一起,运行程序的时候自动调用程序目录下的DLL,要怎么做?或者在程序中怎么写将Microsoft.Office.Interop.PowerPoint.DLL添加到GAC中?

解决方案 »

  1.   

    客户机必须装POWERPOINT的!不装不行滴。你那个DLL就是个接口  不能替代应用程序
      

  2.   

    本身就是用过COM对象池获取设置数据的。。你没装注册表中怎么会有?
      

  3.   

    2L不是的啊 客户端有装OFFICE的,默认是GAC是有OFFICE.CORE的
    退一步说,我这边测试客户机,有的也装了powerpoint ,但是依旧不能运行,好像是没有把Microsoft.Office.Interop.PowerPoint注册进GAC ,必须安装OFFICE2003PIA 才能够调用
      

  4.   

    在安装OFFICE的时候必须要提供支持.NET的(是个选项。。按装OFFICE的时候仔细看下)。。不然等于没装
      

  5.   


    呵呵这个我是知道的,就是为了避免这样我才想把这个DLL打包在一起的,这样不管用户是不是点了都可以支持了
      

  6.   

    我这边将gacutil.exe打包在根目录下,然后用程序调用gacutil注册了DLL结果测试成功了 不需要装OFFICE也可以调用了
      

  7.   

    在你的项目引用的地方右键你引用的DLL 选择属性,里面有设置是否拷贝到bin目录的属性,设置为true即可,默认是false的,这样你的程序拷贝的目标机器,就算他的OFFICE没有安装office的.net支持也是可以正常运行的。
      

  8.   

    必须装office  要不微软怎么挣钱啊 
    我们解决的办法是   给用户提示   提示office没有安装
      

  9.   


    这样做之后 就不用注册DLL到GAC了吗?
      

  10.   

    非常感谢xxiju203!成功了 结贴了
      

  11.   


    无论是否用gacutil.exe 注册DLL到GAC, 都需要安装Office, 因为对microsoft.office.interop.powerpoint.DLL的引用,里面的方法会根据GUID指向应用程序,使用Aspose.Slides组建就不需要安装Office, 但是这个组建和Office还是有兼容问题,例如要使用程序添加一个OleObject对象的时,使用microsoft.office.interop.powerpoint.DLL生成的PPT文件用AddOleObjectFrame方法添加到另一个PPT后能正常打开,但是使用Aspose.Slides生成的PPT文件,用AddOleObjectFrame方法嵌入其他PPT时,就不能打开,总是报服务器错误。