2013-04-21 83 views
3

我最近完成了一个项目,涉及多个不同的解决方案相互沟通。当我在自己的网络和计算机上测试项目时,它工作正常。但是,当我在工作网络上使用该项目时,解决方案无法正确通信。分布式系统sqlite错误

我的服务器显示以下消息。

Could not load file or assembly 'System.Data.SQLite, Version=1.0.84.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' 
or one of its dependencies.An attempt was made to load a program with an incorrect format. 

任何想法?

+0

这是在另一台电脑上?或者在你自己的开发电脑上? – Obama 2013-04-21 10:38:21

+0

是的,这是一个不同的计算器。 – Anon 2013-04-21 10:39:44

+0

而且您已确保文件夹读写权限设置正确,以便PC1上的用户可以访问PC2上的文件夹,反之亦然? – Tim 2013-04-21 10:53:38

回答

0

,那么你必须要安装SQLite .NET Connector还另一台计算机上,当你已经安装在您的研究与开发的计算机上.Net SQLite Connector,所以一定要在System.Data.SQLite CopyLocal属性安装并设置为true

<bin>\App.exe (optional, managed-only application executable assembly) 
<bin>\App.dll (optional, managed-only application library assembly) 
<bin>\System.Data.SQLite.dll (required, managed-only core assembly) 
<bin>\System.Data.SQLite.Linq.dll (optional, managed-only LINQ assembly) 
<bin>\x86\SQLite.Interop.dll (required, x86 native interop assembly) 
<bin>\x64\SQLite.Interop.dll (required, x64 native interop assembly) 
应用程序的工作

READ THIS !

好运

+0

我认为这个问题与版本控制有关?我一直在阅读大量关于32位和64位互相配对的文章。 – Anon 2013-04-21 10:54:46

+1

@Anon - 它可能是。其他系统是否具有相同的OS位版本(即,如果您的本地计算机是64位操作系统,而其他计算机是64位还是它们不同)? – Tim 2013-04-21 10:56:10

+0

我已经编辑了答案.. – Obama 2013-04-21 10:59:55

0

这通常意味着您作为32位(x86)进程运行并尝试加载x64 SQLite互操作程序集。或相反亦然。

如果您的应用程序是使用AnyCPU作为构建选项构建的,则依赖性可能会迫使它在x64机器上作为32位进程运行,或者更可能实际上运行在32位应用程序上。并且你的代码试图加载错误的互操作。

解决此问题的最简单方法是相应地创建x86和x64构建和部署。还有其他方法可以动态加载正确的互操作程序集以及一些搜索引擎结果,可以帮助您做到这一点。