解决方案 »

  1.   

    另一台机器上也需要安装sqlite
    程序目录下需要把System.Data.SQLite.dll拷过去
      

  2.   

    兄弟。程序目录下有的。
    我刚去官网下了个sqlite 3.5的 64 位dll 
      

  3.   

     现在生成是可以了。没错。可是运行还是不行。表现是:表单load事件不管用。点按钮操作数据库的时候,直接报错。未能加载文件或程序集“System.Data.SQLite, Version=1.0.84.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139”或它的某一个依赖项。试图加载格式不正确的程序。
    唉!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(楼上楼上的兄弟没看清吧,我这可以运行加密过后的软件。没加密的却不行。郁闷啊)。
    按理说我的sqlite.dll 没错的啊。为啥就不行了。。
      

  4.   

    DLL和RESX有什么关系啊,.net程序引用DLL后,默认会搜索系统盘放DLL的位置(好像是C:/xx/System32文件夹),如果找不到会搜索当前的域中的路径,就是你exe所在的路径,把SqlLite.Dll和你的程序一起发布就可以了。调试的时候,打开你的项目,点开引用,找到System.Data.Sqlite的引用,设置属性复制到本地,为True即可正常调试
      

  5.   

    5楼的兄弟。新本就是把原来的项目全复制过来的生成不了。6楼的兄弟。生成时提示就是那个。我也不知道和resx有啥关系啊。现在不提示了已经。还是找不到文件另外。sqlite.dll肯定是在我debug目录下的。复制到本地的。
      

  6.   

    "试图加载格式不正确的程序"是因为项目目标平台和dll的目标平台不一致引起的,如果dll不区分X64的版本,用的是Any CPU编译的,那么就不可能出现这样的错误,否则你要先看清使用的dll对应的目标平台,编译项目也必须对用那个平台编译,否则就要有可能出错。
    如果你必须要将项目编译为Any CPU,那么对于32位和64位系统就要单独使用不同的dll,但是必须保证那个“Version=1.0.84.0”都是一样的,否则还是要报错。或者设置版本号兼容,够麻烦的。
      

  7.   

    最新发现 。旧本本上 C:\windows\assembly  里面有三个 System.Data.SQLite 
    但是三个公钥标记,和处理器体系结构。都不一样。分别是  MSIL,,,x86,,,AMD64   而我这新本上,assembly 里就没有。一个也没有。是不是这个问题??
      

  8.   

    咋个回事 。难道sqlite还要安装一下?才会出现在那?手工咋弄。
      

  9.   

    可是 这也不对啊。
    我下了官方的演示程序test.exe   是可以操作数据库的啊。我疯了
    我加密过的程序,也是可以用数据库的。。为啥我这开发的这环境下,就是不行。
      

  10.   

    你工程文件中,SQLite dll引用的路径是怎么设置的?查一下新机器是否符合这样的设定。
      

  11.   


    8楼已经回答你了,你需要看一下你的工程编译环境:
    如果是x86,那就安装x86版sqlite并引用
    如果是x64,那就安装x64版sqlite并引用
      

  12.   

    楼上兄弟。我全试过了。我二个本全是win7 64位+vs2010 那个本能用,这个本就不行。dll全是一样的.
      

  13.   


    你用的SQLite是经过强签名的?
      

  14.   

    不要用强签名的SQLite程序集啊……不然你得先把强签名后的dll扔进系统GAC才行
      

  15.   

     求个没签名的SQLITE啊!!!!!!!!!!!!!64,32位的。都要。拜托拜托。百度没找到。
      

  16.   

    •<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) 这个是官网看的。这是啥意思。下载这个版本。。可以自动识别86,64 ????
      

  17.   

    和强签名无关,所有版本的SQLite的签名肯定是一样的,不一样就说明是盗版的,官方发布的不会使用不同的签名。
    另外不签名是不允许注册到全局程序集的,也就是bin目录下面不带dll的使用方法,那个是预先注册到了全局程序集,也就是C:\Windows\assembly下面。至于如何注册到那个位置,方法很简单,直接把dll文件复制进去即可,也可以通过gacutil.exe进行注册,不过两种方法的注册都会预先验证签名的准确性,签名无效就不让注册。命令为:gacutil /if  System.Data.SQLite.dll
    我查了下本机曾经安装过的System.Data.SQLite.dll,有一个是Any CPU的,当然也提供了X64的版本,但为了通用性,还是应该选择Any CPU的啊,至于Visual Studio里引用的时候记得去浏览安装目录,找那个dll,别用全局程序集,不一定准确哦。
      

  18.   

    补充,想要知道你使用的dll是对应什么平台的,用reflector工具查看dll,点击展开的dll名,能够显示“Platform Target”信息的。
      

  19.   

    缺少依赖文件啊,只有那一个文件可不行,System.Data.SQLite.dll,System.Data.SQLite.Linq.dll
      

  20.   

    System.Data.SQLite.dll 分32、64版本的。
      

  21.   

    找到原因了。是一个朋友帮我远程弄了半天才找到原因。我用了xptable(32位) 。又用了sqlite(64) 。。生成的时候。选any cpu 就行了。
      

  22.   

    SQLite dll 不能同时兼容x64和x86.根据平台使用不同版本。
      

  23.   

    你用的是Net4.0 Client, SQLite Version=1.0.84.0不支持,你的程序改为4.0,再下SQLite for netFx4.0安装就行了。
      

  24.   

    我以前也试过这个问题  开始以为是没有编译为64位版本  后来才现在还是System.Data.SQLite.dll这个dll没有放到程序目录下  或者你看看你的配置文件里的sqlite版本和你的System.Data.SQLite.dll版本是不是一致
      

  25.   

    楼上几个兄弟都是不甚了解啊。我之前的软件在老本本上时,就一个DLL通杀XP,WIN7啊。新本上不知道咋回事了。连我本机编译都通不过了。别的配置都是一样的。现在只感觉assembly里 不一样。正在尝试别的。肯定可以一个DLL就行的。另外,网上也有办法,准备三个DLL。然后程序的app.config会自动根据平台配置,选择相应的dll不过我是没研究明白,总通不过。但是效果看到一点还。等搞定了再来回吧。
      

  26.   

    杯具 啊。。
    GAC注册完了dll拷到c:\windows下面了。 注册完了。再用VS编译,还是不通过尼码,这二机器一样的啊。为啥那个就能用。这个不能用。用的都是一个工程的文件。日日日日日啊
      

  27.   

    费什么事啊,把 Any CPU 改成 X86 就完了。
      

  28.   

    原工程就是。x86的啊!!!!!!!!!只是从老本,拷到新本的,就死活不行了。只要是x86。就显示错。无法加载。而错误源是 Main.resx  
      

  29.   

    在X86系统下 SQLite Version=1.0.84.0不支持,要改为NET4.0,不是Client,再下个SQLite for netFx4.0安装,什问题也没有。这个问题也曾困扰我几天。
      

  30.   

    你不是安装过了吗,你把项目中引用的,或者所有用到那个资源的地方全部移除,重新添加你新安装的bin目录下那个
      

  31.   

    全搞定了。xp,win64,32都可以正常运行了。解决文案是。
    1. 准备好当前OS可以用的sqlite.dll 先引用着。
    2. 准备好 sqlite.32.dll  与  sqlite.64.dll  备用在一边
    3. 在main.cs 中,判断OS是32,或64位的。。然后拷贝对应的DLL覆盖当前的sqlite.dll 
    4. 最后  main.cs 中  new Form()  就OK了。 测试全部通过。恩。最后小小广告一下 http://emao.me 我的博客
      

  32.   

    恶猫seo软件 stack overflow at line 0结贴结贴。
      

  33.   

    System.Data.SQLite.dll 是要分32,64位的,生成项目的时候,any cpu 默认64位, x86 代表32位,本人亲测,64,32位都没有问题