未能加载文件或程序集Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce1

未能加载文件或程序集“Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项

程序中嵌入office功能, 解析excel中的数据, 然后存储sqlserver2008数据库中,但是web程序发布后, 报上诉错误,错误原因解析如下:

错误 155 程序集“Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”所使用的“Microsoft.Vbe.Interop, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”版本高于所引用的程序集“Microsoft.Vbe.Interop, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”的版本


也就是说程序集版本要统一, 但是对这些office程序集的引用往往依赖程序运行的主机环境,而主机环境中的提供的程序集版本往往比程序的要求要低.

所以解决这一问题的思路是,提供我们自己的程序集, 首先在开发环境中找到该程序集,如:我本机开发环境引用的程序集路径是C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12, 从中选取Microsoft.Office.Interop.Excel.dll,和Microsoft.Vbe.Interop.dll两个程序集文件,拷贝到web项目的bin目录下,同时确保web.config文件中配置的版本就是拷贝的文件. 可以通过下图得到程序集的路径:

程序运行的时候会首先在gac中查找,如果找到,即调用主机环境下的这两个文件,否则,最终会在bin目录下查找.这样问题即可解决, 其他思路往往是配置主机环境, 将其运行环境与开发环境设置一致, 但是对于租用的空间,往往不现实,除非是拥有独立的主机.


参考网页:http://archive.cnblogs.com/a/2037206/

你可能感兴趣的:(asp.net)