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 ...

Foi útil?

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

.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top