Impossibile caricare il file o l'assembly "Newtonsoft.Json" o una delle sue dipendenze. La definizione del manifesto non corrisponde al riferimento all'assembly


218

Cose che ho provato dopo la ricerca:

  1. in Web.Config ha messo un'associazione alla vecchia versione:

    <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>
    
  2. Modifica il mio file .csproj per assicurarti che sia presente un solo riferimento 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>
    
  3. Cerca nel mio computer ogni Newtonsoft.Json.dll ed elimina ogni versione non 6.0.1 ed elimina il contenuto della mia cartella temporanea

  4. Ripara / Reinstalla il pacchetto nella console del gestore nuget

La compilazione riesce, ma riceve l'errore quando si accede al sito.

MODIFICARE

ok, quindi ho provato a reinstallare come ogni pacchetto nuget, e sembra aver aggiunto di nuovo la versione 4.5 di newtonsoft.json.dll, ma ricevo lo stesso errore. Il freamework di destinazione del mio progetto è .NET 4.5.1 ed ecco la traccia dello stack che sto ottenendo ora:

Errore del server nell'applicazione '/'

Impossibile caricare il file o l'assembly Newtonsoft.Jsono una delle sue dipendenze. La definizione del manifesto dell'assembly individuato non corrisponde al riferimento all'assembly. (Eccezione da HRESULT: 0x80131040)

Descrizione: si è verificata un'eccezione non gestita durante l'esecuzione della richiesta Web corrente. Si prega di esaminare l'analisi dello stack per ulteriori informazioni sull'errore e sulla sua origine nel codice.

Dettagli eccezione System.IO.FileLoadException:: Impossibile caricare il file o l'assembly Newtonsoft.Jsono una delle sue dipendenze. La definizione del manifesto dell'assembly individuato non corrisponde al riferimento all'assembly. (Eccezione da HRESULT: 0x80131040)

Errore di origine:

È stata generata un'eccezione non gestita durante l'esecuzione della richiesta web corrente. Le informazioni relative all'origine e alla posizione dell'eccezione possono essere identificate utilizzando la traccia dello stack delle eccezioni di seguito.

Traccia caricamento assieme: le seguenti informazioni possono essere utili per determinare il motivo per cui Newtonsoft.Jsonnon è stato possibile caricare l'assieme .

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

Stack Trace:

[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

2
Ok, penso di averlo fatto funzionare ora. Ho cancellato ogni Newtonsoft.Json.dll sulla mia macchina che non fosse l'ultima versione che ho trovato, mi sono assicurato di avere l'ultima versione in NuGet, l'ho compilata e mi sono assicurato che fosse l'ultima nella cartella bin, e Ho lasciato le modifiche in web.config e .csproj. Ora sto
commettendo

1
Aggiungere la risposta alla tua domanda in modo che le persone possano vedere che è stata risolta? E segnalo come soluzione
Per Hornshøj-Schierbeck

2
Sto avendo qualche versione di questo problema anche oggi (1/3/2016) con la versione 8.0.2. Sta tentando di caricare la versione 6.0.0. Nessun file nella mia soluzione fa riferimento a 6.0.0. Non esiste la versione 6.0.0. .dll ovunque nella mia area di soluzione. Ho molte copie di newtonsoft.json.dll sul mio computer, di varie versioni, sono utilizzate da software di terze parti installato con cui non voglio scherzare. Oltre a rimuovere tutte quelle copie, ho provato tutte le soluzioni menzionate in questo intero thread e nulla ha funzionato.
Shavais

1
Ho anche riscontrato questo messaggio di errore di newtonsoft-json quando ho aggiunto il riferimento di un progetto a un altro progetto, ma .Net Framework nei progetti era diverso dopo aver risolto lo stesso .Net Framework su entrambi i problemi. Ma non sono riuscito a capire invece del messaggio di errore di Framework perché mostra errori relativi a newtonsoft-json.
Sameer

1
Installa la stessa versione di Newtonsoft.Json in tutti i tuoi progetti, anche se non lo usano.
rubStackOverflow

Risposte:


276

Per risolvere questo problema, mi sono assicurato che tutti i miei progetti usassero la stessa versione eseguendo il seguente comando e controllando i risultati:

update-package Newtonsoft.Json -reinstall

Infine, ho rimosso quanto segue dal mio web.config:

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
  </dependentAssembly>

Se vuoi assicurarti che tutti i tuoi pacchetti Newtonsoft.Json siano la stessa versione, puoi specificare la versione in questo modo:

update-package Newtonsoft.Json -version 6.0.0 -reinstall

17
L'esecuzione del comando di reinstallazione ha funzionato per me. Non ho bisogno di modificare web.config.
Keith

4
Ho solo dovuto aggiungere il tag <dependentAssembly> per eliminare questo errore.
Nicklas Møller Jepsen

3
Ho dovuto fornire la -version, ma omettere il flag -reinstall per farlo funzionare nel mio caso.
anre

1
Sto usando la recente versione 9.0.1 ma mostrava lo stesso errore. Ho quindi controllato la versione nel file csproj ed era 9.0.0.0, l'ho aggiunta al mio web.config e il problema è stato risolto. 1.Assicurati che la versione in csproj sia la stessa di web.config 2. Fai attenzione ai numeri di versione, può dire x.0.1 quando la versione effettiva è x.0.0.0, x può essere 6 o 9 o qualunque cosa sia .
Eugene

7
Nota che per eseguire il comando in VS2017, puoi andare in Strumenti -> Gestione pacchetti Nuget -> Console Gestione pacchetti
Rose

84

Sto usando Newtonsoft.Json v6.0.3, ma questo è quello che dovevo fare nel mio file Web.config:

<dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

Nota che anche se sto usando 6.0.3, ho dovuto inserire newVersion="6.0.0.0"

Nel mio file packages.config ho:

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />

1
Come nota, ho provato a disinstallare / rimuovere / eliminare tutto ciò che ho trovato che aveva a che fare con Newtonsoft.Json, quindi utilizzando Nuget per reinstallarlo, ma ricevevo ancora l'errore sopra. È stato solo quando ho apportato le modifiche che ho menzionato che sono stato in grado di farlo funzionare correttamente.
CraigV

Ho riscontrato questo problema e ho utilizzato il visualizzatore del registro di associazione dell'assembly per diagnosticare. Il raccoglitore di assembly segnala la v6.0.3 Newtonsoft.Json.dll come v6.0.0.0, quindi il reindirizzamento fallirebbe quando lo avevo configurato come 6.0.3.
Jason Slocomb

La riga "Note" mi aiuta. Inizialmente avevo 9.0.1.19813 come newVersion nel bindingRedirect poiché è quello che dice la DLL. Questo è quello che ho ora: <Reference Include = "Newtonsoft.Json, Version = 9.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed, processorArchitecture = MSIL"> <SpecificVersion> False </SpecificVersion> </Reference> <dependentAssembly> <assemblyIdentity name = "Newtonsoft.Json" culture = "neutral" publicKeyToken = "30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion = "0.0.0.0-9.0.0.0" newVersion = "9.0.0.0" /> </dependentAssembly>
Mark Seefeldt

Tre anni dopo sto vivendo la stessa esperienza. La modifica della nuova versione da "12.0.1.0" a "12.0.0.0" ha risolto il problema.
Andrew Shepherd,

64

Ho provato quanto segue dopo essermi già assicurato che il mio computer avesse la stessa versione in tutte le posizioni e che i miei progetti puntavano tutti allo stesso percorso di riferimento. Mi ero anche assicurato che l'associazione della vecchia versione fosse loro e vincolata alla versione corrente di dll che avevo.

Lavoro in un ambiente con un framework rigoroso e il team del framework spesso sconvolge il controllo delle versioni con le diverse dll.

Il modo in cui ho risolto questo problema consisteva nell'eseguire la console del gestore pacchetti all'interno di Visual Studio (2013). Da lì ho eseguito il seguente comando:

update-package Newtonsoft.Json -reinstall

seguito da

update-package Newtonsoft.Json

Questo ha esaminato e aggiornato tutti i miei file di configurazione e i file di progetto pertinenti. Costringendoli tutti alla stessa versione del dll. Inizialmente era la versione 4.5 prima di aggiornare nuovamente per ottenere l'ultima.


È stato l'aggiornamento che ha risolto il problema per me. Il mio progetto è stato aggiornato alla versione 7.0 di Newtonsoft.
id. Non

Ha funzionato per me. Dopo aver fatto ciò, è importante notare che i file package.config e web.config hanno versioni corrispondenti.
TheValyreanGroup

Ha funzionato per me quando ho finito dalla console di Gestione pacchetti NuGet, grazie!
Kbdavis07

25

Ho ricevuto lo stesso messaggio di errore e, come hai detto tu, era dovuto a diverse versioni di Newtonsoft.Json.dll a cui si faceva riferimento.

Alcuni progetti nella mia soluzione MVC usavano il pacchetto NuGet per la versione 4 di quella dll.

Ho quindi aggiunto un pacchetto NuGet (per Salesforce nel mio caso) che ha portato Newtonsoft.Json versione 6 con esso come dipendenza da uno dei progetti. Questo è ciò che ha innescato il problema per me.

Per ripulire le cose, ho usato la sezione Aggiornamenti in NuGet Package Manager per la soluzione (dal menu Strumenti o facendo clic con il pulsante destro del mouse sulla soluzione) per aggiornare il pacchetto Json.Net in tutta la soluzione in modo che fosse la stessa versione per tutti i progetti.

Dopodiché, ho appena controllato i file di configurazione dell'app per assicurarmi che le linee di reindirizzamento del binding andassero alla versione scelta come di seguito.

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

Cosa succede se le DLL hanno dipendenze per diverse versioni di Newtonsoft.Json per la stessa app MVC? Qui è dove sono bloccato.
Jeremy Ray Brown

Usa l'opzione Consolida in Gestione pacchetti NuGet per assicurarti che le versioni non si allontanino.
niico

17

Ok, penso di averlo fatto funzionare ora. Ho cancellato ogni Newtonsoft.Json.dll sulla mia macchina che non era l'ultima versione che ho trovato, mi sono assicurato di avere l'ultima versione in NuGet e l'ho compilata e mi sono assicurato che fosse l'ultima nella cartella bin, e Ho lasciato le modifiche in web.config e .csproj. Ora sto riscontrando un altro errore, quindi deve funzionare ..


2
Come hai trovato tutte le posizioni sulla tua macchina?
obaylis

ho ricevuto l'errore anche quando ho ricevuto il progetto dal server della fondazione del team sul mio pc. ho aggiunto il riferimento di newtonsoft alla mia soluzione. non ha funzionato. quindi ho installato json.net (newtonsoft.json) tramite il gestore di pacchetti nuget. funziona bene.
Mohammad Sadiqur Rahman

si trova all'interno del nome file della cartella bin - Newtonsoft.Json.dll Elimina questo file e reinstalla il pacchetto o installa semplicemente la versione inferiore e reinstalla la versione corretta utilizzando NuGet-Solution
maddy

7

Commentando questa parte sul mio web.config, ho risolto il mio problema:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

Ma ovviamente devi assicurarti di aver aggiornato o di avere la versione giusta facendo ciò nella tua console del gestore di pacchetti:

update-package Newtonsoft.Json -reinstall

5

È possibile risolvere il problema aggiungendo le seguenti righe nel file web.config.

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

5

Dopo ore alle prese con questo ... ho fatto quanto segue:

web.config

<runtime>

  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

    <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
    </dependentAssembly>

    <!-- other assemblies... -->

  </assemblyBinding>
</runtime>

La chiave per inserire la nuova versione corretta e il numero di vecchia versione è aprire il progetto Referencestrova il pacchetto vai alle sue proprietà o fai clic sualt + enter

Troverai una sezione Versionche nel mio caso era in 12.0.0.0realtà 12.0.3durante l'esplorazione con Gestisci NuGet.

Quindi è necessario scegliere la versione del pacchetto dalle proprietà di riferimento (nel mio caso 12.0.0.0)

Infine, cleane rebuildil progetto (potresti voler eliminare il file bineobj cartelle prima).

Potresti affrontare altri problemi di dipendenze dei pacchetti, l'ho fatto per tutti e hanno funzionato.


4

Ho provato i passaggi di Oleg e hanno funzionato per la mia stessa situazione.

Passaggi:

  1. Esegui update-package Newtonsoft.Json -reinstallin Package Manager.

  2. Elimina il tuo binabilitando la visualizzazione dei file nascosti ed eliminando la bincartella.

  3. Chiudi il tuo Visual Studio e riaprilo.

  4. Ora esegui di nuovo il tuo progetto. Credo che dovrebbe essere ok!


3

Nel mio caso si trattava solo di:

Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache

Il problema è stato causato quando ho rimappato una cartella TFS.


3

Ciò che in realtà mi ha aiutato è stato disattivare la build Resharper e utilizzare l'opzione di ricostruzione di VisualStudio nel mio progetto.


Come hai fatto?
Naomi

1
Nelle opzioni di Resharper: Tools -> ReSharper Build -> Build Engine - scegli "Visual Studio"
Shaulian

Ho installato una versione di prova qualche tempo fa (circa un mese, credo) e poi ho disabilitato anche l'estensione. Non lo vedo in Strumenti, quindi spero di stare bene.
Naomi

3

da Strumenti >> Gestione pacchetti NuGet >> Gestisci pacchetto per l'aggiornamento della soluzione Newtonsoft.Json di tutte le soluzioni all'ultima versione


2

se stai lavorando con qualche tipo di sovversione: elimina il progetto e scaricalo di nuovo, per me ha funzionato: S


Molto tempo ma ho dovuto farlo perché nessun'altra soluzione ha funzionato per me
Mike Resoli

2

Ho avuto lo stesso problema su un progetto di test che faceva riferimento a un progetto MVC 5. Questo è successo dopo che mi sono unito a un progetto MVC 5. L'ho risolto installando gli aggiornamenti di Visual Studio 2012 come spiegato qui nella risposta di Andre.

  • Nel tuo studio visivo vai a
    1. Strumenti> Estensioni e aggiornamenti
    2. Seleziona "Aggiornamenti" nell'elenco delle fisarmoniche a sinistra.
    3. Seleziona "Aggiornamenti del prodotto".
    4. Aggiorna alla versione più recente

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere le parti essenziali della risposta qui e fornire il collegamento come riferimento. Le risposte di solo link possono diventare non valide se la pagina collegata cambia
abarisone

Il mio problema è stato risolto con questa soluzione grazie! Avevo installato la versione 8.0.1 e non funzionava fino a quando non ho aggiornato a VS2013 aggiornamento 5
Devin Prejean

2

Non so perché, ma nel mio caso, anche se rimuovo la cartella bin dal progetto, quando compilo il progetto copia la vecchia versione di newtonsoft.json, ho copiato la dll della nuova versione dalla cartella dei pacchetti e per ora si risolve.


Ho avuto un problema simile. Nella mia soluzione, ho un progetto di prova. Il progetto di test stava ottenendo la versione 9 nel cestino, ma il progetto che stavo testando aveva la versione 12. Ho copiato la versione 12 dal progetto nella cartella bin di test nella cartella bin del test.
Josh Jay

2

In alcuni casi, se elimini le tue cartelle Bine Objrisolverai questo problema.


2

Va bene, quindi immagino che la cosa da fare sia aggiungere la mia risposta qui a questo lungo elenco anziché creare una domanda duplicata ...

Se si ottiene questo nel 2019, utilizzando .NET Core 3.0 (anteprima in questo momento), la soluzione è assicurarsi che tutti i progetti abbiano come destinazione la stessa versione di .NET Core (nel mio caso 3.0). Penso di aver avuto un progetto nella soluzione che mirava a 2.1 e il resto era 2.2, quindi probabilmente avrei potuto rimanere con 2.2 ...

Non ho nemmeno Newtonsoft.Json installato in nessuno dei progetti, e naturalmente aggiungerlo a loro non ha risolto il problema.

Se hai librerie di classi .NET Standard o w / e nella tua soluzione, non è necessario che siano sulla stessa versione, anche se probabilmente dovrebbero essere le ultime a cui puoi andare. Ad esempio, le mie librerie di classi .NET Standard sono su 2.2 poiché non esiste ancora .NET Standard 3.0.


1

Nessuna delle risposte, compresa quella selezionata, non ha funzionato per me.

La soluzione era molto più semplice. Ho prima rimosso i riferimenti dal mio livello BUS. Quindi ha eliminato le DLL dal progetto (per assicurarsi che non ci fossero più), quindi ha reinstallato JSON.NET dai pacchetti nuget. E la parte difficile era "spegnerlo e riaccenderlo".

Ho appena riavviato Visual Studio e lì ha funzionato!

Quindi, se provi tutto il possibile e ancora non riesci a risolvere il problema, prova a spegnere e riaccendere Visual Studio, potrebbe essere d'aiuto.


2
Penso che Simple fosse sarcasmo.
Worthy7


1

L'ho risolto rimuovendo la versione inferiore di Newtonsoft.json.dll nella cartella bin e aggiunto Newtonsoft.json.dll V6.0.0.0 e rimosso i seguenti elementi web.config

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>

1

Ho avuto lo stesso problema con dotnet core e sono riuscito a risolverlo svuotando la cache di NuGet.

Apri il PowerShell e inserisci il seguente comando.

dotnet nuget locals all --clear

Quindi ho chiuso Visual Studio, l'ho aperto di nuovo e ho inserito il seguente comando nella console di Gestione pacchetti:

Update-Package

NuGet dovrebbe ora ripristinare tutti i pacchetti e inserire nuovamente la cache di nuget.

Dopo di che sono stato in grado di creare e avviare il mio webapi dotnet core in un container Linux.


1

la soluzione che ha risolto il mio problema è

vai a riferimenti-> fai clic con il pulsante destro del mouse su Newtonsoft.json - vai alle proprietà e controlla la versione

questa stessa versione dovrebbe essere in

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-YourDllVersion" newVersion="YourDllVersion" />
</dependentAssembly>

0

Semplici passaggi. (1) Esegui "update-package Newtonsoft.Json -reinstall" nel gestore dei pacchetti.

(2) Elimina il tuo cestino abilitando la visualizzazione dei file nascosti ed eliminando la cartella bin.

(3) Chiudi il tuo studio visivo e riaprilo.

(4) Ora esegui di nuovo il tuo progetto. Credo che dovrebbe essere ok


0

Ho riscontrato questo problema perché avevo: il progetto A (un .exe desktop) si riferisce al progetto B (un .dll portatile). A e B avevano versioni diverse di JSON.Net, quindi si verificava un conflitto del caricatore. Una volta che ho reso tutte le versioni di JSON.net uguali, ha funzionato. (Questo è in effetti ciò che stanno facendo alcune delle soluzioni di cui sopra - sto solo chiedendo perché funziona)


0

Ho lottato con questo recentemente con un progetto più vecchio.

Sono riuscito a rintracciare il problema dopo aver controllato quale versione della dll si trovava effettivamente nella cartella bin.

Avevo uno script post-build che copiava gli assembly dipendenti da una cartella della libreria dll nella cartella bin. Una configurazione comune dai giorni precedenti al nuget.

Quindi, ogni volta che ho creato lo script post-build, ho sostituito la versione corretta di Json.net con quella precedente


0

Ho avuto esattamente lo stesso problema e la libreria predefinita di Visual Studio 13 per me era 4.5, quindi ho 2 soluzioni una è eliminare il riferimento a questo nel file webconfig. Questa è l'ultima risorsa e funziona.

Il messaggio di errore indica che c'è un problema in questa posizione /Projects/foo/bar/bin/Newtonsoft.Json.DLL. dove si trova la DLL! Un controllo della proprietà di base mi ha detto che era 4.5.0.0 o simile, quindi ho modificato il webconfig per cercare fino a 4.5 e utilizzare 4.5.


0

Nessuna di queste opzioni ha funzionato per me, alla fine è stato;

Test> Impostazioni di test> * .testrunconfig

Ho dovuto aggiungere una nuova riga

<DeploymentItem filename="packages\Newtonsoft.Json.4.5.8\lib\net40\Newtonsoft.Json.dll" />

Assicurati che il percorso e la versione siano corretti per la tua configurazione.


0

Ho avuto lo stesso problema. Ho creato un progetto web api e poi l'ho aggiornato da .net 4.5.1 a .net 4.6.1. La chiusura dell'IDE, l'arresto di IIS e l'eliminazione del contenuto di C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ File temporanei ASP.NET \ dir hanno risolto il problema.

HTH


0

Questo problema non è stato risolto aggiornando i pacchetti NuGet o eseguendo una "pulizia" sul progetto. È stato risolto svuotando manualmente la cartella "obj".


0

Ecco la mia soluzione a questo problema, assicurati che il numero di versione in appconfig o packageconfig sia lo stesso della versione di riferimento nei tuoi riferimenti. Vedi qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.