首页 > 代码库 > 使用版本重定向解决以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程序集版本不一致问题