Recebo o erro “Foi feita uma tentativa de carregar um programa com formato incorreto” em um projeto de replicação do SQL Server
-
09-06-2019 - |
Pergunta
O erro exato é o seguinte
Não foi possível carregar arquivo ou montagem 'Microsoft.SQLServer.Replication, versão = 9.0.242.0, Culture = Neutro, PublicKeyToken = 89845DCD8080CC91' ou uma de suas dependências.Foi feita uma tentativa de carregar um programa com um formato incorreto.
Recentemente, comecei a trabalhar neste projeto novamente, após uma mudança de dois meses para outro projeto.Funcionou perfeitamente antes e verifiquei todas as referências.
Solução 2
Eu encontrei a solução.Atualizei recentemente minha máquina para o Windows 2008 Server de 64 bits.O namespace SqlServer.Replication foi escrito para plataformas de 32 bits.Tudo o que precisei fazer para fazê-lo funcionar novamente foi definir a plataforma de destino nas propriedades de construção do projeto como X86.
Outras dicas
O resposta do careca abaixo está correto, mas você também pode precisar habilitar aplicativos de 32 bits em seu AppPool.
Ao configurar um aplicativo para ser executado em minha máquina local (executando o Vista 64 bits), encontrei este erro:
Não foi possível carregar o arquivo ou assembly
ChilkatDotNet2
ou uma de suas dependências.Foi feita uma tentativa de carregar um programa com um formato incorreto.
Obviamente, o aplicativo usa Componentes ChilKat, mas parece que a versão que estamos usando é apenas a versão de 32 bits.
Para resolver esse erro, configurei meu pool de aplicativos no IIS para permitir aplicativos de 32 bits.Abra o Gerenciador IIS, clique com o botão direito no pool de aplicativos e selecione Configurações avançadas (veja abaixo)
Em seguida, defina "Ativar aplicativos de 32 bits" como True.
Tudo feito!
Altere o valor de Platform Target na página de propriedades do seu projeto web para Any CPU
.
Vá para IIS -> Pool de Aplicativos -> Configurações avançadas -> Ativar aplicativos de 32 bits
Recentemente, tivemos um problema ao tentar executar o código do Visual Studio.Nesse caso você precisa fazer
FERRAMENTAS > OPÇÕES > Projetos e Soluções > PROJETOS WEB e marque a opção "Usar a versão 64 bits do IIS Express para sites e projetos".
Para aqueles que recebem esse erro em um ASP.NET MVC 3 projeto, dentro do próprio Visual Studio:
Em um aplicativo ASP.NET MVC 3 em que estou trabalhando, tentei adicionar uma referência a Microsoft.SqlServer.BatchParser a um projeto para resolver um problema em que ela estava faltando em um servidor de implantação.(Nosso aplicativo usa SMO;a correção correta foi instalar o SQL Server Native Client e algumas outras coisas no servidor de implantação.)
Mesmo depois de remover a referência ao BatchParser, continuei recebendo o erro "Foi feita uma tentativa...", referenciando a DLL do BatchParser, em todas as páginas ASP.NET MVC 3 que abri, e esse erro foi seguido por dezenas de análises de páginas erros.
Se isso acontecer com você, faça uma pesquisa de arquivos e veja se a DLL ainda está em uma das pastas \bin do seu projeto. Mesmo se você fizer uma reconstrução, o Visual Studio não limpará necessariamente tudo em todas as suas pastas \bin.Quando excluí a DLL da lixeira e construí novamente, o erro desapareceu.
Eu tinha isso em um aplicativo MVC5 no Windows 10 no IIS Express.Minha solução foi a seguinte:
- Ferramentas =>
- Opções =>
- Projetos e Soluções =>
- Projetos Web =>
- Use a versão de 64 bits do IIS Express para sites e projetos
- Projetos Web =>
- Projetos e Soluções =>
- Opções =>
mude para 32 bits (verdadeiro) funciona
se você obtiver este comprimento não pode ser menor que zero.Nome do parâmetro:problema de comprimento na configuração do servidor iis, faça a coisa simples, altere a string de conexão no arquivo web.config, como o nome do servidor sql e o nome do servidor, reinicie o iis e tente carregar a página em que funciona
Se Publicação no Visual Studio 2012 ao errar, tente desmarcar o "Procompilar durante a publicação" opção no assistente de publicação.
No aplicativo do formulário do Windows, faço isso, clique com o botão direito do mouse no Project-> Properties-> Build-> Verifique a caixa de seleção Prefere preferir 32 bits.Obrigado a todos
Exclua o diretório de teste de temperatura localizado aqui C: Usuários (Usuário) AppData Local Temp VisualStudioTestExPloreRextensions
Defina todos os projetos para x64 no Visual Studio
Defina a arquitetura do processador padrão como x64 (Test/TestSettings/Default Processor Architecture).
Certifique-se de criar o arquivo de solução de forma limpa. Espero que isso ajude!
Alterar o Target Framework nas propriedades do projeto do .NET Framework 4.7.1 para 4.6.2 funcionou para mim.