2012-04-12 11 views
0

Nachdem ich meinen Kopf mehrere Male über mit SQLite, was Havok auf einigen Maschinen verursacht habe, stolperte ich über eine "Nur Managed" Version der Bibliothek. http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.66.0/DLL nicht gefunden nach der Verwendung von ILMerge

Ich war aufgeregt und legte dies in meinen Projektordner, so dass jetzt mein Projekt auf jedem Computer funktioniert, unabhängig von der Architektur!

Ich war so aufgeregt, dass ich entschied, ILMerge wieder zu verwenden (da alle meine Abhängigkeiten jetzt verwaltet werden), anstatt die DLL-Dateien als Ressourcen kopieren und in den Ausgabeordner schreiben zu müssen, wenn sie ihre Abwesenheit erkennt .

ich die EXE mit folgendem Befehl kompiliert:

ilmerge.exe /target:winexe /zeroPeKind /out:"Core View.exe" CoreView.exe System.Data.SQLite.dll OpenHardwareMonitorLib.dll

(Die zeroPeKind Fahne, weil erforderlich, obwohl SQLite verwaltet wird, ist es nicht als solche gekennzeichnet und führt zu Fehlern auf Kompilation wenn zeroPeKind isn‘ t vorhanden)

Problem ist jetzt, dass, obwohl es gut anläuft, ich folgende Fehlermeldung erhalten, wenn sie versuchen, alle Datenbankoperationen zu tun, wenn die DLL-Datei nicht vorhanden ist:

System.DllNotFoundException: Unable to load DLL 'System.Data.SQLite.DLL'

Kann ich das leicht beheben?

+0

System.Data.SQLite.dll ist nicht nur tatsächlich geschafft. Die heruntergeladene Binärdatei verwendet pinvoke, um auf die nicht verwalteten Funktionen von sqlite3.dll zuzugreifen. – Will

+0

Sind Sie sich sicher? Ich habe die Binärdateien mit der Bezeichnung "Nur verwaltet" heruntergeladen, anstatt die normalen zu verwenden. – CJxD

+0

Ja. Die System.Data.SQLite-Personen führen keine vollständig verwalteten aus. Irgendwann haben Sie noch nicht verwalteten Code. Das bedeutet, dass Sie System.Data.SQLite nicht ohne eine externe DLL verwenden können. – Will

Antwort

Verwandte Themen