Não foi possível carregar o arquivo ou assembly 'xxx' ou uma de suas dependências. Foi feita uma tentativa de carregar um programa com um formato incorreto


188

Acabei de verificar uma revisão do Subversion para uma nova pasta. Abri a solução e recebo isso quando executado:

Não foi possível carregar o arquivo ou assembly 'xxxx' ou uma de suas dependências. Foi feita uma tentativa de carregar um programa com um formato incorreto.

Este é o mesmo código que eu havia verificado há algum tempo. Por que agora está fazendo isso? Agora também vejo um Debug x86 em vez de apenas Debug na pasta bin do projeto xxx. O que é o Debug x86 e por que não tenho o Debug apenas como na pasta bin?


2
Você já tentou reconstruir tudo? Às vezes que as questões correções estranha dependência para mim ...
mezoid

Respostas:


246

Parece que uma parte do projeto está sendo criada apenas para x86, enquanto o restante está sendo construído para qualquer CPU / x64. Isso também me mordeu. Você está executando um x64 (ou uh ... IA64)?

Verifique as propriedades do projeto e verifique se tudo está sendo construído para "Qualquer CPU". Se você estiver no Visual Studio, poderá verificar tudo acessando o menu "x86" ou "Qualquer CPU" (ao lado do menu "Depuração" / "Liberação") na barra de ferramentas na parte superior da tela e clicando em "Gerenciador de configuração..."


1
Também está em Projeto-> Propriedades-> Compilar ou Depurar-> Propriedades-> Compilar. Acabou de atualizar o VS2015, versão 14.0.25123.00, atualização 2. Esta atualização foi lançada em 10/10/16 (ontem!). Encontrei o destino da plataforma definido como x64, o que causou o erro observado. A configuração para "Qualquer CPU" foi corrigida.
Michael D. O'Connor

179

Se você receber esse erro ao executar o site no IIS 7 ou superior em servidores de 64 bits, poderá haver assemblies de 32 bits e o pool de aplicativos terá a opção "Ativar aplicativos de 32 bits" definida como False; Defina como true e reinicie o site para fazê-lo funcionar.


5
@ Mayhem50 O mesmo aqui. Depende de onde o erro ocorre. Se for pelo servidor da Web Visual Studio & Cassini, Fraser está certo. Se ocorrer no IIS7 +, a resposta do Nicks é provavelmente a correção mais provável.
Carl Heinrich Hancke

Este foi teh resposta perfeita para mim (mudou-se um local de IIS6 em x86 para o IIS 7 em x64)
DrStalker

Sim, isso foi feito. Mudei um site do IIS6 no x86 para o IIS 7 no x64. Muito obrigado!
Lukas

40

Eu tive esse erro ao tentar usar o terrível Business Objects 4 para .Net SDK.

Eles enviam cinco arquivos BusinessObjects * .dll, mas todos são de 64 bits.

Para carregar minha página da web, eu precisava clicar em Ferramentas \ Opções e alterar essa configuração no VS2013:

insira a descrição da imagem aqui


Essa opção não existe para mim. A única opção nesta tela para mim em Visual Studio 2010 é "Use IIS Express para novos sites baseados em arquivos e projetos"
de Drew Chapin

Eu tenho essa opção no VS 2017 Professional
SKCS Kamal 2/18 /

33

O inetmgr então acessa Pool de aplicativos-> Configuração avançada do seu pool-> terá a opção "Ativar aplicativos de 32 bits" definida como verdadeira; e reinicie o IIS. verifique novamente.


Segundo isso. Criei um novo pool de aplicativos para o meu site e esqueci de alternar essa configuração.
AlbatrossCafe

1
Isso corrigiu para mim também. A única outra coisa que eu precisava alterar foi alterar o Pipeline para integrado, pois isso também causou um erro depois que a correção acima foi aplicada.
AxleWack

7

A BadImageFormatException em um aplicativo em execução no IIS (não em execução no VS, pois o visual studio corrige o problema usando a compilação para "Qualquer CPU") pode ser causada pelo seguinte:

O site é um servidor x64 e a configuração padrão do pool de aplicativos para Ativar aplicativos de 32 bits era falsa. e você tem montagens de 32 bits

No nível do Visual Studio, a correção é:

  1. Altere a configuração do projeto "CPU alvo" para "ANYCPU"

7

Certifique-se de verificar sua configuração para "Preferir 32 bits". No meu caso, o Visual Studio 2012 teve essa configuração marcada por padrão. A tentativa de usar qualquer coisa de uma DLL externa falhou até eu desmarcar "Preferir 32 bits" .

insira a descrição da imagem aqui


4

É definitivamente um problema com alguns dos projetos que estão sendo criados para compatibilidade com x86 em vez de qualquer CPU. Se eu tivesse que adivinhar, diria que algumas das referências entre seus projetos provavelmente estão referenciando as DLLs em algumas das pastas bin \ debug em vez de serem referências de projeto.

Quando um projeto é compilado para x86 em vez de 'Any CPU', as dll vão para a pasta bin \ x86 \ debug em vez de bin \ debug (que provavelmente é onde suas referências estão procurando).

Mas, em qualquer caso, você deve usar referências de projetos entre seus projetos.


0

se enquanto no visual studio com o IIS expresse funcionando e quando publicado falhou, tente o seguinte:insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.