Em algum aplicativo computadores não podem carregar o arquivo DLL sqlite
-
06-07-2019 - |
Pergunta
Eu escrevi um aplicativo que usa sqlite e ele funciona muito bem em mais dos sistemas. Ele é escrito em C #, e o único não-estrutura de montagem é o SQLite, que é incluído por System.Data.SQLite.dll.
eu implantá-lo da mesma maneira em todas as máquinas (cópia colando o arquivo EXE, o arquivo de banco de dados e o arquivo System.Data.SQLite). Funciona muito bem para todo o meu PC e a maior parte do PC é que eu tentei.
Mas os relatórios então eu tenho que para algumas pessoas isso lança a seguinte exceção:
Não foi possível carregar arquivo ou assembly 'System.Data.SQLite, versão = 1.0.65.0, Culture = neutral, PublicKeyToken = db937bc2d44ff139' ou uma das suas dependências. Uma tentativa foi feito para carregar um programa com um formato incorreto.
Agora que eu fiz se o arquivo DLL está na mesma pasta que o arquivo executável do aplicativo. É a mesma DLL, com a mesma versão como indicado na mensagem de exceção acima.
Eu estava realmente confuso com isso, então eu criei uma máquina virtual fresco, janelas instaladas 7 profissional sobre ele, e simplesmente copiar colado os arquivos, ea coisa funcionou. Então, se ele funciona em uma nova janela, eu não posso imaginar o que os outros PC poderia faltar ...
Nota:. Janelas Duas dessas máquinas onde o projeto lança a exceção também estão executando 7 proffesional
Eu realmente aprecio qualquer ajuda sobre isso, porque eu estou fora de ideias frescas ...
Solução
Aqui está uma possibilidade: é a diferença entre o trabalho e as máquinas não-trabalho de 32 bits versus 64 bits? Você está construindo para "Qualquer CPU", quando você deve construir para apenas o número de bits do seu DLL externo?
Outras dicas
É possível que as máquinas que lançam a exceção estiver executando uma versão do Windows de 64 bits e de que seu programa está usando a configuração AnyCPU. O System.Data.SQLite DLL é uma besta de duas caras: uma parte gerido e a-parte nativa. Pode ser que a parte-nativa é responsável pela exceção.
Consulte esta questão para mais informações.
Você verificou se o sistema de destino é 64-bit ou 32-bit?
Pode ser que um de seus dependências requer uma versão de 32 bits do Windows. Para resolver o problema, você pode especificar um alvo plataforma nas propriedades de seu projeto C #: Escolha x86 em vez de Qualquer CPU
.