C# Visual Studio项目安装程序未安装所有dll';s
我有一个名为“start.exe”的C#exe,当运行它时,它将检查SQL数据库,并在满足某些条件的情况下将文件复制到文件夹中 这适用于大多数计算机 但在某些计算机上,当我尝试运行它时,会收到以下错误消息C# Visual Studio项目安装程序未安装所有dll';s,c#,visual-studio,setup-project,C#,Visual Studio,Setup Project,我有一个名为“start.exe”的C#exe,当运行它时,它将检查SQL数据库,并在满足某些条件的情况下将文件复制到文件夹中 这适用于大多数计算机 但在某些计算机上,当我尝试运行它时,会收到以下错误消息 System.invalidOperationException: The 'Microsoft.ACE.OLEDB.12.0' is not registered on the local machine 为了解决这个问题,我创建了一个安装项目,该项目应该添加缺少的.dll 我创建了设置项
System.invalidOperationException: The 'Microsoft.ACE.OLEDB.12.0' is not registered on the local machine
为了解决这个问题,我创建了一个安装项目,该项目应该添加缺少的.dll
我创建了设置项目,转到应用程序文件夹,添加了项目的主要输出
然后,我在所有文件上运行了批构建,并将msi和setup.exe文件复制到一台有问题的计算机上并运行了它
它将System.Net.Http.dll和“start.exe”添加到计算机中
当我运行exe时,它仍然会给我相同的错误
我相信消息框来自这些代码行
try
{
using (var conn = new OleDbConnection(@"Provider =Microsoft.ACE.OLEDB.12.0;Data Source=" + CurFeSource + ";"))
{
conn.Open();
using (var cmdBE = new OleDbCommand("SELECT value FROM Tab1", conn))
{
OleDbDataReader rdrBE = cmdBE.ExecuteReader();
rdrBE.Read();
be_version = (rdrBE.GetString(0));
rdrBE.Close();
}
using (var cmdFE = new OleDbCommand("SELECT Col FROM Links", conn))
{
OleDbDataReader rdrFE = cmdFE.ExecuteReader();
rdrFE.Read();
fe_version = (rdrFE.GetString(0));
rdrFE.Close();
}
}
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
return false;
}
编辑:
正如SQLGeorge所说,我需要安装Microsoft.ACE.OLEDB.12.0
但是如何将其添加到安装项目中。必须从Microsoft下载Microsoft.ACE.OLEDB.12.0: 摘自微软: 此下载将安装一组组件,以便于在现有Microsoft Office文件(如Microsoft Office Access 2010(*.mdb和.accdb)文件和Microsoft Office Excel 2010(.xls、*.xlsx和*.xlsb)文件之间向其他数据源(如Microsoft SQL Server)传输数据。还支持与现有文本文件的连接。ODBC和OLEDB驱动程序是为应用程序开发人员安装的,用于开发与Office文件格式连接的应用程序 正如微软所指出的: 作为Jet的通用替代品(如果您需要Jet的通用替代品,则应使用)
该DLL不是解决方案的一部分。它是MS Access(运行时)的一部分,因此您需要安装Access或至少安装可从Microsoft下载的运行时。请参阅@SQLGeorge的答案