首页 > 代码库 > 使用版本重定向解决以COM方式调用Excel程序集版本不一致问题
使用版本重定向解决以COM方式调用Excel程序集版本不一致问题
以COM方式调用Excel,由于开发环境与目标终端程序集版本的不一致,导致目标端程序无法使用。
下面调用COM组件打开Excel文件。如图,先在开发环境添加COM引用
代码如下:
using System;using System.ComponentModel;using System.Windows.Forms;namespace WindowsFormsApplication4{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "*.xls|*.xls|*.xlsx|*.xlsx"; dialog.Multiselect = false; dialog.FileOk += Dialog_FileOk; dialog.ShowDialog(); } private void Dialog_FileOk(object sender, CancelEventArgs e) { OpenFileDialog dialog = sender as OpenFileDialog; if (dialog != null) { String FileName = dialog.FileName; Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Visible = true; Microsoft.Office.Interop.Excel.Workbooks books = excel.Workbooks; books.Open(FileName); //excel.Quit(); } } }}
将编译后的程序XCOPY到客户端,执行报错信息如下:
提示未能加载文件或程序集”Microsoft.Office.Interop.Excel,Version=15.0.0.0”,该程序集版本为开发环境下的版本,如图
而目标环境中该程序集版本为12.0.0.0
在目标环境中添加可配置文件WindowsFormsApplication4.exe.config文件
内容如下:
<?xml version="1.0" encoding="utf-8" ?><configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Office.Interop.Excel" publicKeyToken="71e9bce111e9429c" culture="neutral" /> <bindingRedirect oldVersion="15.0.0.0" newVersion="12.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime></configuration>
通过配置文件,重定向程序集版本,如下,旧版:15.0.0.0为开发环境版本,新版:12.0.0.0为目标环境版本。通过版本重定向后,目标终可以操作Excel文件了。
使用版本重定向解决以COM方式调用Excel程序集版本不一致问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。