131 votes

Impossible de charger fichier ou assemblage ' System.Data.SQLite '

J'ai installé ELMAH 1.1 .Net 3.5 64 dans mon ASP.NET projet et maintenant j'ai cette erreur (à chaque fois que j'essaie de voir toute la page):

Impossible de charger le fichier ou l'assembly 'Système.Les données.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139 " ou l'une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect.

Description: Une exception non gérée s'est produite au cours de l'exécution de la web demande. Veuillez consulter la trace de pile pour plus d'informations sur l'erreur et d'où il vient dans le code.

Détails De L'Exception: Système.BadImageFormatException: Pourrait ne pas charger le fichier ou l'assembly 'Système.Les données.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139 " ou l'une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect.

Plus de détails de l'erreur à la base.

Ma Solution de plate-forme est "any CPU" et je suis en cours d'exécution sur un x64 de Windows 7 sur un x64, bien sûr, d'un processeur. La raison pour laquelle nous sommes à l'utilisation de cette version de ELMAH est parce que 1.0 .Net 3.5 (x86, qui est la seule plate-forme pour laquelle il est compilé) nous a donné ce même message d'erreur sur notre x64 de Windows server.

J'ai essayé de compiler pour x86 et x64 et j'obtiens la même erreur. J'ai essayé de supprimer les toutes sortie du compilateur (bin et obj). Enfin j'ai fait une référence à la dll SQLite directement, quelque chose qui n'était pas nécessaire pour le projet de travailler sur le serveur et j'ai cette erreur du compilateur:

Erreur 1 Avertissement d'Erreur: Assemblée génération -- assembly Référencé 'System.Data.SQLite.dll les objectifs d'un processeur différent MyProject

Les idées de ce que peut être le problème?

Plus de détails de l'erreur:

Source De L'Erreur:

Une exception non gérée s'est généré au cours de l'exécution de la demande web. Les informations concernant les origine et l'emplacement de l'exception peut être identifié à l'aide de l'exception trace de la pile ci-dessous.

Trace De La Pile:

[BadImageFormatException: ne Peut pas charger le fichier ou l'assembly 'Système.Les données.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139 " ou l'une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect.]
Système.De la réflexion.De l'assemblée._nLoad(AssemblyName fileName, String codeBase, la Preuve assemblySecurity, Assemblée locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +0
Système.De la réflexion.De l'assemblée.nLoad(AssemblyName fileName, String codeBase, la Preuve assemblySecurity, Assemblée locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +43
Système.De la réflexion.De l'assemblée.InternalLoad(AssemblyName assemblyRef, la Preuve assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +127 Système.De la réflexion.De l'assemblée.InternalLoad(String assemblyString, la Preuve assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +142 Système.De la réflexion.De l'assemblée.Load(String assemblyString) +28
Système.Web.La Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +46

[ConfigurationErrorsException: Pourrait ne pas charger le fichier ou l'assembly 'Système.Les données.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139 " ou l'une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect.]
Système.Web.La Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +613 Système.Web.La Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBindirectory() +203 Système.Web.La Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +105
Système.Web.La Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +178
Système.Web.La Compilation.BuildProvidersCompiler..ctor(VirtualPath configPath, Boolean supportLocalization, Chaîne outputAssemblyName) +54
Système.Web.La Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp) +232
Système.Web.La Compilation.BuildManager.CompileGlobalAsax() +52 Système.Web.La Compilation.BuildManager.EnsureTopLevelFilesCompiled() +337

[HttpException (0x80004005): ne Peut pas charger le fichier ou l'assembly 'Système.Les données.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139 " ou l'une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect.]
Système.Web.La Compilation.BuildManager.ReportTopLevelCompilationException() +58 Système.Web.La Compilation.BuildManager.EnsureTopLevelFilesCompiled() +512 Système.Web.De l'hébergement.HostingEnvironment.Initialiser(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) +729

[HttpException (0x80004005): ne Peut pas charger le fichier ou l'assembly 'Système.Les données.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139 " ou l'une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect.]
Système.Web.HttpRuntime.FirstRequestInit(HttpContext contexte) +8896783
Système.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext contexte) +85
Système.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +259

126voto

Anton Tykhyy Points 12680

System.Data.SQLite.dll est un mixte de l'assemblée, c'est à dire qu'il contient à la fois du code managé et du code natif. Par conséquent, un particulier System.Data.SQLite.dll est x86 ou x64, mais jamais les deux.

Mise à jour (courtoisie J. Pablo Fernandez): Cassini, le développement serveur web utilisé par Visual Studio lorsque vous appuyez sur F5 ou cliquez sur le vert «play», est x86 uniquement ce qui signifie que même si votre poste de travail est de 64 bits, vous ne serez en mesure d'utiliser la version x86 de System.Data.SQLite.dll.

Une alternative est de ne pas utiliser de Cassini, mais IIS7 qui est correctement x64.

80voto

beckelmw Points 746

Assurez-vous que « Activer 32 – Bit Applications » est définie sur false pour le pool d’applications.

45voto

umar Points 331
Page d’accueil

15voto

Chris Points 3508

C’est très simple si vous n’utilisez pas de SQLite :

Vous pouvez supprimer les dll de SQLite dans dossiers de bin de votre solution, puis dans le dossier où vous référencer ELMAH. Reconstruction et que votre application ne sera pas essayez de charger cette DLL que vous n’utilisez pas.

9voto

gatapia Points 1213

J’ai une machine de dev de 64 bits et 32 bits construire serveur. J’ai utilisé ce code avant l’initialisation de NHibernate. Fonctionne un charme sur toute architecture (bien le 2 J’ai testé)

Espérons que cela aide quelqu'un.

Guido

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X