环境描述:有一WEB项目用到了 Microsoft.Office.Interop.Excel 用来生成报表时 读写excel ,原来开机的机器上装了office2003 ,还有 world2007
项目bin目录下引用了如下程序集
Microsoft.Vbe.Interop.dll
Microsoft.Office.Interop.Excel.dll
Office.dll
Excel.dll
遇到的问题-----------------------------------
当把所有项目复制到未装OFFICE的新机器时 无法编译通过项目,错误提示:
错误 3 未能加载文件或程序集“Microsoft.Vbe.Interop, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040) G:\WebSite\Web.Config 51
程序集中的: using Excel = Microsoft.Office.Interop.Excel; 也找不到,只存在
Microsoft.CSharp 或Microsoft.SqlServer 等 不存在Microsoft.Office
这就导致:
1.所有调用了Office的代码编译通不过,试过各种办法
2.项目下所有cs文件失去了智能感知能力,aspx 中第一行始终出现波纹线,鼠标移上去提示:
错误 1 G:\WebSite\ajaxUser.aspx: ASP.NET 运行时错误: 未能加载文件或程序集“Microsoft.Vbe.Interop, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040) (G:\WebSite\web.config line 51) G:\WebSite\ajaxUser.aspx 1 1 G:\WebSite\
尝试的办法---------------------------------------------
-删除配置文件中system.web/compilation/assemblies节下的
<add assembly="office, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>
<add assembly="Microsoft.Vbe.Interop, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>
cs 中的代码文件有了智能感知,但是 提示找不到 Microsoft.Office.Interop.Excel GOOGLE 后据下载了 O2003PIA.EXE 安装 可提示前提是要安装office,晕 难道不装office就不能编译通过程序么? 我已经把程序要用的dll都复制到了项目bin目录下都不可以!!!按.NET 原理只需要加入用到的程序集就可以啊为什么呢,就是不想装OFFICE
还有一个确信的事情是:我把程序发布到服务器上,程序能正常工作,程序器也上也没有装OFFICE ,为什么服务器可以,就是编译通不过呢
楼主注意dll的引用路径。
因为有些dll部署在GAC中或经tlb形式发行,而不仅仅在Bin下。
如果是强命名,需要手动部署,而不是复制到bin就可以。
以臆碰到一个现象差不多的例子,可以参考下思路:
http://www.cnblogs.com/downmoon/archive/2010/03/08/1680834.html