我有一个C#程序引用了一些东西,即Excel和office引用。但是,在目标计算机上,未安装Office。有没有办法在某种安装包中包含程序所需的引用/ dll,以便它可以工作?
以下是我尝试使用Excel 2003在某人的计算机上运行时出现的错误代码。我从microsoft安装了2010 Interop,但这仍然发生了:
线程无法初始化。 System.IO.FileLoadException:无法加载文件或程序集“Microsoft.Office.Interop.Excel,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c”或其依赖项之一。 locaved程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
警告:程序集绑定日志记录已关闭
当错误出现时,它会引用此部分,尽管在另一台计算机上,它会在我的计算机上显示项目所在的路径。
private void bgwFirstProcessThread_DoWork(object sender, DoWorkEventArgs e)
{
try
{
BackgroundWorker worker;
worker = (BackgroundWorker)sender;
//Get the Class object and call the main method
XlsxThread WO = (XlsxThread)e.Argument;
WO.ProcessXlsx(worker, e);
}
catch (Exception ex)
{
MessageBox.Show("Thread failed to Initialize.\n" + ex.ToString());
}
}
答案 0 :(得分:1)
结帐Microsoft Office主互操作程序集可再发行组件可在此处使用.. http://www.microsoft.com/en-us/download/details.aspx?id=3508
这允许您打包Microsoft.Office.Interop程序集(在bin文件夹中)和代码中的引用。
但是,如果代码中的功能需要目标计算机上的MS Office,那么办公室安装是必需的结果。
= 和AFAIK - 如果要保持兼容多个办公室版本,则必须包含要支持的最低版本的Interop程序集,以使代码与所有版本兼容。因此,您需要符合Excel 2003标准的互操作程序集版本才能满足您的需求http://www.microsoft.com/en-gb/download/details.aspx?id=20923 这将限制您使用较新的办公功能主义者,如功能区菜单。