Coisas que tentei depois de pesquisar:
no Web.Config coloque uma ligação na versão antiga:
<dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" /> </dependentAssembly>
Edite meu arquivo .csproj para garantir que haja apenas uma referência da Newtonsoft
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <SpecificVersion>False</SpecificVersion> <Private>True</Private> </Reference>
Pesquise no meu computador todos os Newtonsoft.Json.dll e exclua todas as versões que não sejam da 6.0.1 e exclua o conteúdo da minha pasta temporária
Reparar / reinstalar o pacote no console do gerenciador de nuget
Ele consegue criar, mas obtém o erro ao acessar o site.
EDITAR
ok, então tentei reinstalar como todos os pacotes nuget e parece ter adicionado novamente a versão 4.5 do newtonsoft.json.dll, mas estou recebendo o mesmo erro. O objetivo do meu projeto é o .NET 4.5.1 e aqui está o rastreamento de pilha que estou recebendo agora:
Erro de Servidor na '/' Aplicação.
Não foi possível carregar o arquivo ou o assembly
Newtonsoft.Json
ou uma de suas dependências. A definição do manifesto da montagem localizada não corresponde à referência da montagem. (Exceção de HRESULT:0x80131040
)Descrição: ocorreu uma exceção não tratada durante a execução da solicitação da web atual. Revise o rastreamento de pilha para obter mais informações sobre o erro e onde ele se originou no código.
Detalhes da exceção
System.IO.FileLoadException
:: Não foi possível carregar o arquivo ou o assemblyNewtonsoft.Json
ou uma de suas dependências. A definição do manifesto da montagem localizada não corresponde à referência da montagem. (Exceção de HRESULT:0x80131040
)Erro de origem:
Uma exceção não tratada foi gerada durante a execução da solicitação da web atual. Informações sobre a origem e o local da exceção podem ser identificadas usando o rastreamento da pilha de exceções abaixo.
Rastreio de carga da montagem: As informações a seguir podem ser úteis para determinar por que a montagem
Newtonsoft.Json
não pôde ser carregada.
=== Pre-bind state information ===
LOG: DisplayName = Newtonsoft.Json
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Newtonsoft.Json | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/
LOG: Initial PrivatePath = c:\users\user\documents\visual studio 2013\Projects\foo\bar\bin
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\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:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 4.5.0.0 redirected to 6.0.1.0.
LOG: Post-policy reference: Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
Rastreio de pilha:
[FileLoadException: Could not load file or assembly 'Newtonsoft.Json' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
[FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
System.Reflection.Assembly.Load(String assemblyString) +28
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38
[ConfigurationErrorsException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516
[HttpException (0x80004005): Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408
fonte
Respostas:
Para resolver isso, assegurei que todos os meus projetos usassem a mesma versão executando o seguinte comando e verificando os resultados:
E, finalmente, removi o seguinte do meu web.config:
Se você deseja garantir que todos os seus pacotes Newtonsoft.Json sejam da mesma versão, é possível especificar a versão da seguinte forma:
fonte
Estou usando o Newtonsoft.Json v6.0.3, mas é isso que eu tinha que fazer no meu arquivo Web.config:
Observe que, mesmo usando o 6.0.3, tive que colocar
newVersion="6.0.0.0"
No meu arquivo packages.config eu tenho:
fonte
Tentei o seguinte depois de ter garantido que meu computador tinha a mesma versão em todos os locais e que meus projetos estavam todos apontando para o mesmo caminho de referência. Eu também havia me assegurado de que a ligação da versão antiga fosse deles e vinculada à versão atual da dll que eu possuía.
Eu trabalho em um ambiente com uma estrutura rígida e a equipe de estrutura frequentemente altera o controle de versão com as diferentes DLLs.
Como corrigi esse problema foi executar o console do gerenciador de pacotes no visual studio (2013). A partir daí, executei o seguinte comando:
Seguido por
Isso passou e atualizou todos os meus arquivos de configuração e arquivos de projeto relevantes. Forçando todos eles para a mesma versão da DLL. Que era inicialmente a versão 4.5 antes de atualizar novamente para obter as últimas.
fonte
Eu tive a mesma mensagem de erro e, como você mencionou, foi devido a diferentes versões do Newtonsoft.Json.dll sendo referenciadas.
Alguns projetos na minha solução MVC usavam o pacote NuGet para a versão 4 dessa dll.
Em seguida, adicionei um pacote NuGet (para o Salesforce no meu caso) que trouxe a versão 6 do Newtonsoft.Json como uma dependência de um dos projetos. Foi isso que desencadeou o problema para mim.
Para limpar as coisas, usei a seção Atualizações no NuGet Package Manager para a solução (fora do menu Ferramentas ou da solução, clique com o botão direito do mouse) para atualizar o pacote Json.Net em toda a solução, para que ela fosse a mesma versão para todos os projetos.
Depois disso, verifiquei apenas os arquivos de configuração do aplicativo para garantir que todas as linhas de redirecionamento de ligação fossem para a versão escolhida, conforme abaixo.
fonte
Ok, acho que consegui funcionar agora. Excluí todos os Newtonsoft.Json.dll da minha máquina que não eram a versão mais recente que consegui encontrar, verifiquei se possuía a versão mais recente no NuGet e construí-a e certifique-se de que era a mais recente na pasta bin e Eu deixei as alterações no web.config e no .csproj. Agora estou com outro erro, por isso deve estar funcionando ..
fonte
Ao comentar esta parte no meu web.config resolveu meu problema:
Mas é claro que você precisa se atualizar ou ter a versão correta, fazendo isso no console do gerenciador de pacotes:
fonte
Eu tentei os passos de Oleg, e eles trabalharam para a minha mesma situação.
Passos:
Execute
update-package Newtonsoft.Json -reinstall
no Gerenciador de Pacotes.Exclua seu
bin
, ativando a visualização dos arquivos ocultos e a exclusão dabin
pasta.Feche o Visual Studio e abra-o novamente.
Agora execute seu projeto novamente. Eu acredito que deveria estar tudo bem!
fonte
Você pode resolver o problema adicionando as linhas abaixo no arquivo web.config.
fonte
No meu caso, era apenas uma questão de:
O problema foi causado quando eu remapeei uma pasta TFS.
fonte
O que realmente me ajudou foi desativar a compilação do Resharper e usar a opção VisualStudio Re-Build no meu projeto.
fonte
em Ferramentas >> Gerenciador de Pacotes NuGet >> Gerenciar pacote para atualização da solução Newtonsoft.Json de todas as soluções para a versão mais recente
fonte
se você estiver trabalhando com algum tipo de subversão: exclua o projeto e faça o download novamente, funcionou para mim: S
fonte
Eu tive o mesmo problema em um projeto de teste que tinha referência a um projeto MVC 5. Isso aconteceu depois da fusão com um projeto MVC 5. Corrigi-o instalando atualizações do Visual studio 2012, conforme explicado aqui na resposta de Andre.
fonte
Eu não sei por que, mas no meu caso, mesmo que eu remova a pasta bin do projeto, quando o construo copia a versão antiga do newtonsoft.json, copiei a dll da nova versão da pasta packages e ela resolve por enquanto.
fonte
Em alguns casos, se você excluir suas pastas
Bin
eObj
, resolverá esse problema.fonte
Tudo bem, então acho que o melhor a fazer é adicionar minha resposta aqui a esta longa lista, em vez de criar uma pergunta duplicada ...
Se você está obtendo isso em 2019, usando o .NET Core 3.0 (visualização no momento), a solução é garantir que todos os projetos tenham como alvo a mesma versão do .NET Core (no meu caso 3.0). Eu acho que eu tinha um projeto na solução direcionada para 2.1 e o restante era 2.2, então eu provavelmente poderia ter continuado com 2.2 ...
Eu nem tenho o Newtonsoft.Json instalado em nenhum dos projetos e, naturalmente, adicioná-lo a eles não resolveu o problema.
Se você possui bibliotecas de classes .NET Standard ou w / e em sua solução, elas não precisam estar na mesma versão, embora provavelmente devam ser as mais recentes possíveis. Por exemplo, minhas bibliotecas de classes do .NET Standard estão no 2.2, pois ainda não existe um .NET Standard 3.0.
fonte
Nenhuma das respostas, incluindo a marcada, não funcionou para mim.
A solução era muito mais simples. Eu removi as referências da minha camada BUS. Em seguida, excluiu as dlls do projeto (para garantir que ele se foi) e depois reinstalou o JSON.NET dos pacotes de nuget. E a parte complicada foi "desligar e ligar novamente".
Acabei de reiniciar o visual studio e lá funcionou!
Portanto, se você tentar todo o possível e ainda não conseguir resolver o problema, tente ativar e desativar o visual studio novamente, isso pode ajudar.
fonte
Se nenhuma dessas obras, verifique esta resposta:
https://stackoverflow.com/a/12011221/150370
( TL; DR : remova o espaço para nome xml da
configuration
marca no seu arquivo de configuração. Caso contrário, os redirecionamentos de ligação serão ignorados)fonte
Eu o resolvi removendo a versão inferior do Newtonsoft.json.dll na pasta bin e adicionei o Newtonsoft.json.dll V6.0.0.0 e removi os seguintes elementos web.config
fonte
Eu tive o mesmo problema com o dotnet core e consegui corrigi-lo limpando o cache do NuGet.
Abra o PowerShell e digite o seguinte comando.
Então fechei o Visual Studio, abri-o novamente e digitei o seguinte comando no Console do Gerenciador de Pacotes:
O NuGet agora deve restaurar todos os pacotes e exibir novamente o cache de nuget.
Depois disso, fui capaz de criar e iniciar meu webapi do dotnet core em um contêiner Linux.
fonte
a solução que resolveu meu problema para isso é
goto reference-> clique com o botão direito do mouse em Newtonsoft.json - goto properties e verifique a versão
esta mesma versão deve estar em
fonte
Passos fáceis. (1) Execute "update-package Newtonsoft.Json -reinstall" no gerenciador de pacotes.
(2) Exclua sua lixeira ativando a exibição dos arquivos ocultos e a pasta da lixeira.
(3) Feche o seu estúdio visual e abra-o novamente.
(4) Agora execute seu projeto novamente. Eu acredito que deveria estar ok
fonte
Eu encontrei esse problema porque tinha: o projeto A (um desktop .exe) se refere ao projeto B (um .dll portátil). A & B tinha versões diferentes do JSON.Net e, portanto, houve um conflito no carregador. Depois que eu fiz todas as versões do JSON.net iguais, funcionou. (Isto é, de fato, o que algumas das soluções acima estão fazendo - só estou explicando por que funciona)
fonte
Eu lutei com isso recentemente com um projeto mais antigo.
Eu consegui rastrear o problema depois de verificar qual versão da dll estava realmente na pasta bin.
Eu tinha um script pós-compilação que copiava assemblies dependentes de uma pasta de biblioteca dll para a pasta bin. Uma configuração comum dos dias anteriores ao nuget.
Então, toda vez que eu construí o script pós-construção, substitui a versão correta do Json.net pela versão mais antiga
fonte
Eu tinha exatamente o mesmo problema e a biblioteca padrão do Visual Studio 13 para mim era 4,5, então eu tenho duas soluções: uma é tirar a referência a isso no arquivo webconfig. Esse é o último recurso e funciona.
A mensagem de erro informa que há um problema neste local /Projects/foo/bar/bin/Newtonsoft.Json.DLL. onde está a DLL! Uma verificação básica da propriedade me disse que era 4.5.0.0 ou semelhante, então mudei o webconfig para procurar até 4.5 e usar 4.5.
fonte
Nenhuma dessas opções funcionou para mim, no final foi;
Teste> Configurações de teste> * .testrunconfig
Eu tive que adicionar uma nova linha
Verifique se o caminho e a versão estão corretos para sua instalação.
fonte
Eu tive o mesmo problema. Criei um projeto de API da Web e atualizei-o de .net 4.5.1 para .net 4.6.1. O fechamento do IDE, a interrupção do IIS e o conteúdo de C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Arquivos temporários do ASP.NET \ dir corrigiram o problema.
HTH
fonte
Esse problema não foi resolvido para mim atualizando os Pacotes NuGet ou executando uma "Limpeza" no projeto. Foi resolvido limpando a pasta "obj" manualmente.
fonte
Aqui está minha solução para esse problema, verifique se o número da versão em appconfig ou packageconfig é igual à versão de referência em suas referências. Veja aqui
fonte
No meu caso, a mensagem de erro foi " versão 6.0.0 ", mas esta versão não está disponível para instalação, então instalei a " versão 6.0.1 " no meu projeto e resolvi o meu problema.
fonte