![](/img/trans.png)
[英]Can't load SQLite.Interop.dll when referencing a DLL containing System.Data.SQLite.dll
[英]On some computers application can't load sqlite dll file
我編寫了一個使用sqlite的應用程序,它在大多數系統上運行良好。 它是用C#編寫的,唯一的非框架程序集是sqlite,它包含在System.Data.SQLite.dll中。
我在所有機器上以相同的方式部署它(復制粘貼exe文件,數據庫文件和System.Data.SQLite文件)。 它適用於我所有的PC以及我嘗試過的大多數PC。
但后來我得到報告說,對某些人來說,它會拋出以下異常:
無法加載文件或程序集'System.Data.SQLite,Version = 1.0.65.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'或其依賴項之一。 嘗試加載格式不正確的程序。
現在我已確保dll文件與應用程序exe文件位於同一文件夾中。 它是相同的dll,具有與上面的異常消息中所述相同的版本。
我真的對此感到困惑,所以我創建了一個新的虛擬機,在其上安裝了Windows 7專業版,並且只是復制粘貼文件,並且事情有效。 因此,如果它在一個新窗口上工作,我無法想象其他PC可能會丟失什么...
注意:項目拋出異常的其中兩台機器也運行Windows 7 proffesional。
我真的很感激這方面的任何幫助,因為我是新鮮的想法......
這是一種可能性:工作和非工作機器之間的區別是32位還是64位? 您是否正在為“任何CPU”構建,當您應該構建外部DLL的位數時?
拋出異常的計算機可能正在運行64位版本的Windows,並且您的程序正在使用AnyCPU配置。 System.Data.SQLite DLL是一個雙面的野獸:托管部分和本機部分。 可能是本機部分負責異常。
有關詳細信息,請參閱此問題 。
您是否檢查過目標系統是64位還是32位?
可能是您的某個依賴項需要32位版本的Windows。 要解決此問題,您可以在C#項目的屬性中指定平台目標:選擇x86而不是任何CPU。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.