» »

C# in SQLite knjižica

C# in SQLite knjižica

bsslo ::

Napisal sem program v C#, ki uporablja SQLite bazo. Ko program zaženem na računalniku kjer sem ga napisal ta dela lepo. Ne glede na to ali ga zaženem iz Visual Studia (2012, Express) ali pa ročno iz direktorija.

Če program skopiram, prenesem na drug računalnik, pa se le ta ne zažene. Javi mi:
 Izjema

Izjema

. Oba računalnika sta Windows 7 SP1, x64, z .NET frameworkom 4.5.

Kaj sem poskusil:
- V visual studiu sem poskusil nastaviti tako x86, kot tudi x64 arhitekturo, vendar brez uspeha.
- Skopiral dll-je v C:\Windows\System32
- Skopiral v C:\Temp\Sqlite in to pot dodal v PATH

Očitno kopiram napačne SQLite knjižice. Katere knjižice so prave in kam jih moram skopirati? Ali moram v Visual studiu kaj nastaviti? Želja je, da bi program lahko deloval tako na x86 kot na x64 arhitekturi (kot 32 biten program).

camx ::

Skopiraj System.Data.SQLite.dll v mapo kjer imaš program (.exe)

bsslo ::

Tudi to sem že poizkusil. Ain't working.
Kopiral pa sem kar tistega, ki je bil v bin\release direktoriju na razvojnem PC-ju.

darkkk ::

Kaj pa če zadevo napakiraš v click-once installer? (publish project), načeloma ti bi moral znat zapakirat vse kar rabiš.

mihies ::

ugibam, da sql.lite zbir potrebuje še kakšen ne-.net dll. Tam, kjer si dobil gonilnik za sql.lite, ti bo pisalo, kaj moraš priložiti, da ti bo delovalo.
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

camx ::

Če uporabljaš ta SQLite lib za .NET, potem moraš kopirat še SQLite.Interop.dll.

mihies ::

Tudi SQLLite datoteke moraš verjetno prepisati v mapo, kjer imaš exe (odvisno, kako jih gonilnik išče naokoli).
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

bsslo ::

Poskusil sem še z vašimi predlogi in še vedno ne dela. Po vsej verjetnosti zato, ker sta sistem in projekt že nasrana.

Da vas drugače vprašam:
- kaj in kako namestiti na razvojnem PC-ju, da bom lahko program spisal (na kak način dodati reference, dll-je, ipd.)
- kaj in kako namestiti na strankinem PC-ju, da se bo program poganjal?

Sistem na razvojnem pc-ju: win 7 s SP1, x64 .NET FW 4.5, Visual studio Ultimate
Sistem na strankinem pc-ju: Win 7 s SP1, x86 ali x64 .NET FW x.y (lahko namestim karkoli).
Aplikacija se lahko poganja kot 32 bitna, ni potrebe da je 64-bitna.
-----
Edit: Opažam še NuGet. Ga je smiselno uporabit za namestitev SQLite? Da ne bo še večje štale naredil?

Zgodovina sprememb…

  • spremenil: bsslo ()

Invictus ::

Lahko pa SQLite in ostale knjižnice statično zlinkaš v program ...

Če se danes to še dela ...
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

mihies ::

@bsslo mogoče bi začeli raje s tem, kateri gonilnik za sql lite sploh uporabljaš. Kaj moraš namestiti na strankin PC je odvisno ravno od tega...
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

bsslo ::

mihies, uporabil sem kar setup package iz te strani: link . Konkretno: Setups for 64-bit Windows (.NET Framework 4.5), drugi ponujeni link v tem razdelku. Ampak ker sem pred tem štrikal še z drugimi dll-ji in referencami bi okolje raje na novo postavil.

Z Sqlite in dodajanjem referenc na DLL-je v VS nisem nikoli delal. Tako, da prosim za predloge, ki mi bodo koristili tudi pri prihodnjih projektih.

Zgodovina sprememb…

  • spremenil: bsslo ()

mihies ::

Če je aplikacija 32 bitna (Platform Target = x86) potem je dovolj, da distributiraš
BIN\System.Data.SQLite.dll
BIN\x86\SQLite.Interop.dll
BIN\System.Data.SQLite.Linq.dll (če uporabljaš LINQ)
kjer je BIN mapa tvoje aplikacije.

Če imaš Platform Target = AnyCPU potem moraš dodati še
BIN\x64\SQLite.Interop.dll.
AnyCPU pomeni, da se aplikacija prilagodi OSju (na x64 bo x64, na x86 pa x86).
Polega tega seveda potrebuješ še pravi .net framework na ciljnem računalu. Bodisi sam ročno inštaliraš ali pa narediš neke vrste namestite svoje aplikacije, ki avtomatično zahteva določen .net framework.

Ponavadi ti bo vsaka namestitev upoštevala zbire (assembly), ki jih imaš med referencami v projektu. Dodatne, ne-nadzorovane (non-managed) datoteke pa moraš priložiti ročno.
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

bsslo ::

Super! Bom danes sprobal.

bsslo ::

Ok, še nekaj vprašanj :)

1. Presnel sem Precompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.5) in to drugi ponujeni zip: sqlite-netFx45-static-binary-Win32-2012-1.0.84.0.zip , saj prvi ne vsebuje SQLite.Interop.dll datoteke.

Ali nato na razvojnem PCju zaženem Installer.exe, ki se nahaja v zipu? Ali je dovolj, da System.Data.SQLite.dll skopiram v projekt in dodam referenco nanj? Ustvarim seveda še mapo x86, skopiram SQLite.Interop.dll v njo ter izberem opcijo "Always Copy".

2. Pri določitvi platform targeta x86 imam opcijo "Copy settings from: {Empty} ali Any CPU". Je vseeno kaj izberem?

3. Če bi rad, da mi aplikacija teče tudi na Win XP, moram izbrati target .NET 4.0, saj .NET 4.5 ni možno namestiti na XP. Drži?

Looooooka ::

Pretty much so.
Ce je pure .net knjiznica je lahko kar lepo any cpu.
Če je COM knjiznica in .NET uporablja nek interop dll potem je najbolje, da zadevo skompajlas pod x86.
Za SQLLite(ugibam) ce se prav spomnim ti lepo zbuildaj za x86 in dodaj referenco na x86 verzijo...za x64 pa x64.

Looooooka ::

Aja...ce bos instaliral z installerjem x86 in x64 verzijo bo dovolj, da v visual studio dodas referenco iz okna za izbiro knjiznic, ki so pac ze registriranje v GACu.
Ce noces zadeve instalirat potem bo dovolj, da downloadas x64 in x86 verzijo in ju sam rocno instaliras in spet dodas referenco iz dialoga. Se pravi da NE browsas direktno do folderja in dll-ja.
Ce NE mislis registrirati potem bos pac moral zbrat in skompajlat pravo verzijo dll-ja in potem zamenjat referenco ko bos kompajlat za drug tip procesorja.
Prvi nacin je se najbolj eleganten.

bsslo ::

Sem naredil tako, da sem ročno skopiral oba DLL-ja v direktorije in uporabil nastavitve kot ste svetovali. Se mi zdi zadeva tako še najbolj clean. Nekaj težav sem imel z uvozom cs datotek, ampak zdaj špila.

Hvala vsem pomagačem! case closed :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Visual Basic] Aplikacija deluje nepopolno

Oddelek: Programiranje
91065 (849) bajsibajsi
»

Pomoč - visual basic - proti plačilu

Oddelek: Programiranje
121172 (808) borut_p
»

[c#] Vprašanje glede release verzije aplikacije

Oddelek: Programiranje
51335 (1159) Ericssony
»

Dll napisan v C++ importan v C# aplikacijo

Oddelek: Programiranje
113548 (3335) cikopero
»

[Delphi] Izbira podatkovne baze

Oddelek: Programiranje
222443 (1903) zhigatsey

Več podobnih tem