J'ai écrit une application qui utilise sqlite et fonctionne très bien sur plus des systèmes. Il est écrit en C# et le seul assembly hors-cadre est sqlite, qui est inclus par System.Data.SQLite.dll.Sur certains ordinateurs, l'application ne peut pas charger le fichier sqlite dll
Je le déploie de la même manière sur toutes les machines (copie du fichier exe, du fichier de base de données et du fichier System.Data.SQLite). Cela fonctionne très bien pour tous mes PC et la plupart des PC que j'ai essayés.
Mais alors que j'ai rapports que pour certaines personnes, il jette l'exception suivante:
Impossible de charger le fichier ou l'assemblage « System.Data.SQLite, Version = 1.0.65.0, Culture = neutre, PublicKeyToken = db937bc2d44ff139 'ou l'une de ses dépendances. Une tentative a été effectuée pour charger un programme avec un format incorrect .
Maintenant, je me suis assuré que le fichier dll est dans le même dossier que le fichier d'application exe. C'est la même DLL, avec la même version que celle indiquée dans le message d'exception ci-dessus. J'ai été vraiment confus par cela, donc j'ai créé une nouvelle machine virtuelle, installé Windows 7 professionnel sur elle, et juste copié collé les fichiers, et la chose a fonctionné. Donc, si cela fonctionne sur une nouvelle fenêtre, je ne peux pas imaginer ce que les autres PC pourraient manquer ...
Remarque: Deux de ces machines où le projet lance l'exception exécutent également windows 7 proffesional.
J'apprécierais vraiment aucune aide à ce sujet, parce que je suis frais d'idées ...
Merci beaucoup! Totalement manqué que sqlite.NET a deux fichiers dll différents - pour x32 et x64. J'ai changé de DLL sur les machines sur lesquelles ça ne fonctionnait pas et ça marche maintenant. Je n'ai jamais pensé à leur demander 32 vs 64 bits ... –
Y at-il un moyen de vérifier à l'exécution si la plate-forme est 32/64 bits et agir en conséquence dans ce cas? – Ben
@Ben: J'ai peur de ne pas savoir. Vous auriez besoin de charger dynamiquement la bonne DLL sqlite à l'exécution, mais je ne sais pas comment le faire dans .net. – RichieHindle