Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio项目安装程序未安装所有dll';s_C#_Visual Studio_Setup Project - Fatal编程技术网

C# Visual Studio项目安装程序未安装所有dll';s

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 我创建了设置项

我有一个名为“start.exe”的C#exe,当运行它时,它将检查SQL数据库,并在满足某些条件的情况下将文件复制到文件夹中

这适用于大多数计算机

但在某些计算机上,当我尝试运行它时,会收到以下错误消息

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的答案