Não foi possível carregar o arquivo ou montagem ... O parâmetro está incorreto


211

Recentemente, conheci a seguinte exceção na solução C #:

Erro 2 Não foi possível carregar o arquivo ou assembly 'Newtonsoft.Json, Versão = 3.5.0.0, Culture = neutral, PublicKeyToken = b9a188c8922137c6' ou uma de suas dependências. O parâmetro está incorreto. (Exceção de HRESULT: 0x80070057 (E_INVALIDARG))

Isso não depende do meu código ou do nome do assembly (como Newtonsoft.Jsonneste caso).

Quando eu excluo esta dll da solução, o compilador informa sobre outra na mesma exceção. Então, suponho que algo deva ser ativado / desativado no meu PC :)


3
Não. É um erro do compilador ou uma exceção de tempo de execução. Eu suspeito do último. Por favor, seja mais claro.
leppie

2
Eu também têm enfrentado a mesma exceção, mas eu consegui corrigi-lo com o problema de Thomas solution.The foi devido ao desligamento do sistema inadequado, devido à falta de energia
Sandeep

Respostas:


346

Parece que um assembly corrompido está sendo referenciado.

Limpar ambos:

  1. a pasta \ bin do seu projeto

  2. a pasta temporária (deve estar C:\Users\your_username\AppData\Local\Temp\Temporary ASP.NET Filesno Windows 7)

e veja se o erro ainda acontece


3
alex muito obrigado por isso! a segunda coisa ajudou: Eu limpei a ASP.NEt arquivos temporários do diretório)
Liker777

feliz em saber que funciona. lembre-se de aceitar a resposta se ajudou :)
Alex

9
ver a resposta por @Thomas para outros locais para eliminar (o que funcionou para mim)
Simon_Weaver

3
Obrigado. Limpar a pasta temporária do usuário após uma falha grave resolveu o problema para mim.
Petrus Theron

13
% TEMP% \ Arquivos temporários do ASP.NET C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Arquivos temporários do ASP.NET C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Arquivos temporários do ASP.NET C : \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Arquivos temporários do ASP.NET C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Arquivos temporários do ASP.NET C: /Windows/Microsoft.NET/Framework/ v4.0.30319 / Arquivos ASP.NET temporários Esta lista aumentará como se você tivesse outras versões do .NetFramework. Resposta Src: stackoverflow.com/a/16033324/1724777 stackoverflow.com/a/11743430/1724777 Razão para o problema: BLUE_SCREEN_OF_DEATH
NavaRajan

286

Dependendo se você estiver executando o X64, talvez seja necessário limpar mais alguns pontos. Apenas limpar meu diretório de usuários não foi suficiente.

  1. % TEMP% \ arquivos temporários do ASP.NET
  2. Arquivos C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET
  3. C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Arquivos temporários do ASP.NET
  4. C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Arquivos temporários do ASP.NET
  5. C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Arquivos temporários do ASP.NET

Essa lista aumentará como se você tivesse outras versões da estrutura instaladas.


72
você pode achar que você precisa fazer isso se você computador bluescreened durante a compilação
Simon_Weaver

2
+1 Adição bem compilada à resposta. Este fixa-lo para mim, obrigado
Ralph Lavelle

7
Essa parece ser a solução se você estiver executando o Visual Studio como administrador quando o computador travar ou, alternativamente, se você for tão burro quanto eu, quando a bateria acabar.
Sav

4
AMD! Eu consegui mais de 4 GB de projetos pré-históricos meus nesses lugares! Essa coisa nunca limpa?!?! Obrigado!
precisa saber é o seguinte

2
Só queria que você soubesse que, após dois anos, este post ainda está ajudando as pessoas. Muito obrigado.
Laurence Frost

42

Eu tive que limpar

C: /Windows/Microsoft.NET/Framework/v4.0.30319/ Arquivos ASP.NET temporários

Somente então o problema foi resolvido.


1
Esta resposta funcionou para mim também, com um 64-bit Win 7 máquina que hospeda MVC 4 em IIS Expresso
Ben H

13

Para saber o que limpar com certeza - adicione a seguinte chave do Registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion\EnableLog (DWord set to 1).

Então você verá a saída como abaixo. Isso indica onde o asp.net está tentando carregar suas DLLs. Limpe este diretório.

LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\app\AtlasAdvisor\web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL **file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3c8629f7/dfa387b6/Avanade.ViddlerNet.DLL.**
LOG: Attempting download of new URL **file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3c8629f7/dfa387b6/Avanade.ViddlerNet/Avanade.ViddlerNet.DLL**.

3
Ah, e também, uma redefinição do IIS era necessária para eu ver os caminhos.
Landon Poch

Onde esse log é exibido?
Luke Rice

O log é exibido na saída de erro quando ocorre uma exceção.
voidsstr

12

Limpe os arquivos de estrutura temporários do seu projeto em: -

C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Arquivos temporários do ASP.NET \


5

Você também pode limpar o diretório de pacotes e permitir que o NuGet baixe novamente os pacotes ausentes

resolveu o problema para mim


... e eu, apesar de ter acabado de remover o diretório do pacote incorreto.
26615 Phil Cooper

Eu apaguei os temporários no AppData temp & c: \ ... \ micorosoft.net \ .. \ temp, iisreset, ... tudo mencionado acima. mas não funciona comigo. Uma vez que eu deletei todos os pacotes e restaurá-lo ... ele funciona comigo ... muito obrigado: D
bunjeeb

@bunjeeb é um prazer cara :)
megz

4

Exclua todos os arquivos dessas pastas.

C: /Windows/Microsoft.NET/Framework/v4.0.30319/ Arquivos ASP.NET temporários C: /Windows/Microsoft.NET/Framework64/v4.0.30319/ Arquivos ASP.NET temporários


3

Obter um novo conjunto de binários do controle Source ajudou.

obrigado


3

Apenas limpe esta pasta: (somente Windows x64)

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Arquivos temporários do ASP.NET



2

Eu tive o mesmo problema aqui - as soluções acima não funcionaram. O problema estava com o ActionMailer. Executei os seguintes comandos de desinstalação e instalação do nuget

uninstall-package ActionMailer
install-package ActionMailer

Resolvi meus problemas, espero que ajude outra pessoa.


2

Isso pode acontecer ao fazer referência a DLLs de invólucro COM. No seu projeto do Visual Studio, em Referências, selecione as DLLs do invólucro COM que estão sendo referenciadas e verifique se eles têm os seguintes valores de propriedade: "Incorporar tipos de interoperabilidade": Falso e "Versão específica": Falso.


Esta é uma ótima resposta e deve receber mais votos. Todas as outras respostas têm como certo o contexto do ASP.NET. No entanto, tive a mesma exceção gerada por uma chamada COM em um aplicativo simples de console; isso funcionou perfeitamente para mim. Obrigado senhor.
precisa saber é o seguinte

2

Acabei de excluir os dados temporários do aplicativo desse caminho

C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files

Resolução de problemas


2

Vejo muitos técnicos publicados sobre a limpeza de diretórios temporários de tempo de execução do ASP .Net pertencentes a cada estrutura .Net hospedada em sua máquina, como neste resposta. Mas acredito que devemos conhecer a logística clara de por que precisamos limpar cegamente todos os diretórios de trabalho temporários de todas as estruturas .Net. Segundo mim, não deveria ser o caso.

Meu conselho seria que você deveria tentar uma abordagem de limpeza de diretório pontiaguda para resolver esse problema. Como você saberia qual diretório limpar?

  1. Vá para o IIS e clique com o botão direito do mouse no nó do site no painel de navegação esquerdo para abrir o menu de contexto. No menu de contexto, aponte para Manage Application-> Advanced Settings...para abrir a Advanced Settingsjanela.
  2. Verifique o pool de aplicativos ao qual seu site está atribuído. No meu caso, é DefaultAppPoolcomo mostrado abaixo:

insira a descrição da imagem aqui

  1. Agora vá para o Application Poolsnó na barra de navegação esquerda no IIS. Agora verifique se a versão .Net CLR está sendo executada pelo seu pool de aplicativos. No meu caso, é a v4.0, como mostrado abaixo:

insira a descrição da imagem aqui

Como a versão do CLR hospedada pelo meu pool de aplicativos é a v4.0, limpei apenas os arquivos temporários da pasta pertencentes ao ASP .NET v4.0 apenas como abaixo:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

E é isso. Meu problema foi resolvido.

Lição aprendida : isso é indicativo do fato de que todos os arquivos temporários usados ​​pelo seu site não estão espalhados por vários diretórios, mas são ao mesmo tempo referenciados pelo seu pool de aplicativos. Então, você precisa limpar apenas essa pasta específica.


1

A limpeza dos arquivos C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET funcionou para mim. Pensando em automatizar o processo de exclusão para evitar o problema no futuro.


1

Se você estiver usando o Data Tools do SQL Server 2012, que usa o shell do VS2010 em 1 de maio de 2013, verifique as configurações do Gerenciador de Configurações. Uma alteração no nome do servidor de Fluxo de trabalho para xCPWorkflow foi suficiente para produzir exatamente o mesmo. O parâmetro está incorreto (exceção de HRESULT: 0x80070057 (E_INVALIDARG)) .



1

Eu tive esse problema ao fazer o controlador no MVC. Eu mudei a versão do framework .net. O problema foi resolvido


0

O problema está relacionado à versão de tempo de execução .Net de uma biblioteca de classes referenciada (referências expandidas, selecione a biblioteca e verifique a "Versão de tempo de execução". Eu tive um problema com o Antlr3.Runtime, depois de atualizar meu projeto do visual studio para a v4.5. usei o NuGet para desinstalar o Microsoft ASP.NET Web Optimization Framework (devido a uma cadeia de dependências que me impediram de desinstalar o Antlr3 diretamente)

Em seguida, usei o NuGet para reinstalar o Microsoft ASP.NET Web Optimization Framework. Isso reinstalou as versões corretas de tempo de execução.


0

No meu caso, eu queria compilar uma DLL visível do COM. O problema era que uma versão mais antiga desta DLL estava localizada aqui:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE

Assim, o Visual Studio carregou essa versão em vez da recém-compilada, enquanto tentava registrá-la.


0

Limpar todos os arquivos da pasta temporária (pasta C: \ Users \ user_name \ AppData \ Local \ Temp \ Temporary ASP.NET Files \ project)


0

Às vezes, você também precisa limpar esta pasta: C: \ Windows \ Temp \ Temporary ASP.NET


0

Eu enfrentei o mesmo erro porque o aplicativo não encontrou estruturas dependentes na C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\pasta. Acabei de reparar meu Visual Studio, que adicionou a estrutura necessária no local acima e está funcionando bem.


0

No meu caso, alterar o número da porta IISExpress nas propriedades do meu projeto resolveu o problema.


0

Se alguém por aí estiver usando o conjunto de ferramentas WiX, descobri que meu projeto de instalador tinha uma referência a um projeto antigo que havia sido removido recentemente da solução. Demorei um pouco para perceber, uma vez que havia vários projetos na solução que eu estava tentando criar e a mensagem não indicava qual projeto estava falhando na criação (e estava limpo, o que também estava falhando).


0

Eu tive usuários do Siemens Teamcenter 10 Client para Microsoft Office recebendo o mesmo erro sobre uma DLL diferente. Nenhuma das outras respostas funcionou. A solução foi excluir as pastas no

C:\Users\%username%\AppData\Local\assembly\

0

Eu tive o problema semelhante ao abrir o gerenciador de pacotes Nuget, removi todos os arquivos temporários e construí o projeto, funcionou bem.

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.