1

我在 Visual Studio 2010 中制作安装项目时遇到了一些问题。我正在使用 Addin-express 制作与 Microsoft Excel 关联的程序,并在其中使用 SQLite 作为简单数据库。我已经阅读了有关 stackoverflow 的其他答案,但他们的解决方案并没有帮助我。

我正在使用可以在http://sqlite.phxsoftware.com找到的 SQLite.net 。我无法连接到那个网站,所以到 dll 的直接链接是http://sourceforge.net/projects/sqlite-dotnet2/

这个插件使用的是 32 位版本的 Microsoft Office Excel,虽然我运行的是 64 位 windows 7,所以我在 Visual Studio 2010 项目中包含了 32 位版本的 dll。我在 Visual Studio 调试中运行 32 位 dll 没有问题,因此我在我的 Visual Studio 安装项目中包含了相同的 dll。但是,当我在我的虚拟机(也是 Windows 7 64 位)上运行此安装程序时,我收到以下错误和堆栈跟踪:

Detailed technical information follows: 
---
(Inner Exception)
(Inner Exception)
Date and Time:         4/5/2012 7:24:52 PM
Machine Name:          TOM-PC
IP Address:            --------------------
Current User:          Tom-PC\Tom

Application Domain:    C:\Program Files (x86)\Fintools\Fintools XL\
Assembly Codebase:     file:///C:/Program Files (x86)/Fintools/Fintools XL/AddinExpress.MSO.2005.DLL
Assembly Full Name:    AddinExpress.MSO.2005, Version=6.5.3057.2005, Culture=neutral, PublicKeyToken=4416dd98f0861965
Assembly Version:      6.5.3057.2005

Exception Source:      
Exception Type:        System.Runtime.InteropServices.COMException
Exception Message:     Failed to load the runtime. (Exception from HRESULT: 0x80131700)
Exception Target Site: Object reference not set to an instance of an object.

---- Stack Trace ----



(Outer Exception)
Date and Time:         4/5/2012 7:24:52 PM
Machine Name:          TOM-PC
IP Address:            -------------------
Current User:          Tom-PC\Tom

Application Domain:    C:\Program Files (x86)\Fintools\Fintools XL\
Assembly Codebase:     file:///C:/Program Files (x86)/Fintools/Fintools XL/AddinExpress.MSO.2005.DLL
Assembly Full Name:    AddinExpress.MSO.2005, Version=6.5.3057.2005, Culture=neutral, PublicKeyToken=4416dd98f0861965
Assembly Version:      6.5.3057.2005

Exception Source:      COMWizards
Exception Type:        System.IO.FileLoadException
Exception Message:     Could not load file or assembly 'System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or one of its dependencies. Failed to load the runtime. (Exception from HRESULT: 0x80131700)
Exception Target Site: GetDataTable

---- Stack Trace ----
   COMWizards.SQLiteDatabase.GetDataTable(sql As String)
       AddinExpress.MSO.2005.DLL: N 00000 (0x0) JIT 
   COMWizards.frmImpliedForwardRate.GetMostRecentDate(strDataTableName As String)
       AddinExpress.MSO.2005.DLL: N 0020 (0x14) IL 
   COMWizards.frmImpliedForwardRate..ctor(appExcel As _Application, Path As String)
       AddinExpress.MSO.2005.DLL: N 0110 (0x6E) IL 
   COMUI.AddinModule.adxIFRWiz_OnClick(sender As Object, control As IRibbonControl, pressed As Boolean)
       AddinExpress.MSO.2005.DLL: N 0007 (0x7) IL 
   AddinExpress.MSO.ADXRibbonButton.DoInternalAction(e As ADXRibbonOnActionEventArgs)
       AddinExpress.MSO.2005.DLL: N 0035 (0x23) IL 



(Outer Exception)
Date and Time:         4/5/2012 7:24:52 PM
Machine Name:          TOM-PC
IP Address:            ----------------------
Current User:          Tom-PC\Tom

Application Domain:    C:\Program Files (x86)\Fintools\Fintools XL\
Assembly Codebase:     file:///C:/Program Files (x86)/Fintools/Fintools XL/AddinExpress.MSO.2005.DLL 
Assembly Full Name:    AddinExpress.MSO.2005, Version=6.5.3057.2005,     Culture=neutral,   PublicKeyToken=4416dd98f0861965
Assembly Version:      6.5.3057.2005

Exception Source:      
Exception Type:        AddinExpress.MSO.ADXExternalException
Exception Message:     An error has occured in the code of the add-in.
Exception Target Site: Object reference not set to an instance of an object.

---- Stack Trace ----

我已经尝试使用“Any CPU”和“x86”平台构建这个项目,但都没有成功。我曾尝试使用 64 位版本的 DLL,但它给了我 badimageformat 异常,这让我相信 32 位版本是正确的版本。我已将 system.data.sqlite.dll 放置在我的插件的根文件夹和 excel 的根文件夹中,但都没有解决我的问题。尽管我是一个没有经验的 .NET 程序员,但我完全没有想法,所以我在这里寻找有关如何解决此问题的建议。

谢谢您的意见。

4

1 回答 1

2

请使用这个支持最新版本的 sqlite 和 .Net 的更新的 system.data.sqlite.dll:

http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

于 2012-04-06T07:41:14.560 回答