Impossibile caricare il file o l'assembly 'System.Net.Http.Formatting' o una delle sue dipendenze. Il sistema non può trovare il percorso specificato


158

Ho una piccola app MVC che uso per motivi di pratica, ma ora sto riscontrando un errore ogni volta che provo a eseguire il debug:

Could not load file or assembly 'System.Net.Http.Formatting' or one of its dependencies. 
The system cannot find the path specified.

Ho cercato su Google ma non riesco a trovare una soluzione. Sto usando .NET 4.5.

Non può essere il file DLL perché sto usando .Net 4.5.



L'ho provato e non ha funzionato ... Invece ho ricevuto un errore su Gestione pacchetti che diceva "NuGetCmdletUnhandledException, NuGet.PowerShell.Commands.InstallPackageCommand"
Norris

Risposte:


185

Ogni volta che ho un errore NuGet come questi di solito prendo questi passaggi:

  1. Vai alla cartella dei pacchetti in Esplora risorse ed eliminala.
  2. Apri Visual Studio e vai su Strumenti > Gestore pacchetti libreria > Impostazioni gestore pacchetti e sotto la voce Gestore pacchetti sul lato sinistro è presente il pulsante "Svuota cache pacchetto". Fare clic su questo pulsante e assicurarsi che la casella di controllo "Consenti a NuGet di scaricare i pacchetti mancanti durante la compilazione" sia selezionata.
  3. Pulisci la soluzione
  4. Quindi fare clic con il tasto destro del mouse sulla soluzione in Esplora soluzioni e abilitare il ripristino del pacchetto NuGet
  5. Costruisci la soluzione
  6. Riavvia Visual Studio

Fare tutti questi passaggi ripristina quasi sempre tutti i pacchetti e le DLL di cui ho bisogno per il mio programma MVC.


MODIFICA >>>

Per Visual Studio 2013 e versioni successive, il passaggio 2) dovrebbe contenere:

  1. Apri Visual Studio e vai su Strumenti > Opzioni > Gestione pacchetti NuGet e sul lato destro c'è un "pulsante Cancella cache pacchetto". Fare clic su questo pulsante e assicurarsi che le caselle di controllo "Consenti a NuGet di scaricare i pacchetti mancanti" e "Controlla automaticamente i pacchetti mancanti durante la compilazione in Visual Studio" siano selezionate.

7
Questo ha funzionato ... Risolto il problema ... Grazie Jordan_Walters ... Non ho abbastanza rappresentante per votare ... altrimenti il ​​tuo aiuto è stato molto apprezzato
Norris

10
Un buon consiglio ma non ha risolto il mio problema con "Impossibile caricare il file o l'assembly 'System.Net.Http.Formatting' o una delle sue dipendenze. Il sistema non riesce a trovare il percorso specificato". Per me ho dovuto andare su Tools / NuGet Package Manager / Package Manager Console e poi "Update-Package -ProjectName MyProject -reinstall". Tutto risolto!
GeoMac,

3
@YuraZaletskyy Penso che sia in $ {SolutionDir} / pacchetti /. Vale a dire la cartella della soluzione principale.
jakejgordon,

1
Ottimi consigli, grazie, mi hanno davvero aiutato. Spero non ti dispiaccia che ho aggiunto alcune ulteriori informazioni per riflettere le versioni successive di Visual Studio.
Sheridan,

1
Ho seguito quanto sopra e tuttavia l'errore è rimasto - ho guardato manualmente la versione della dll e quando ho controllato il mio file web.config c'erano voci duplicate, lasciavo solo una voce per abbinare la tua versione di dll e tutto dovrebbe funzionare - ha funzionato per me
JazziJeff,

168
  • Rimuovi tutti i riferimenti di codice a System.Net.*

  • nella finestra del pacchetto,

    Install-Package Microsoft.AspNet.WebApi.Client

  • Pulisci e ricostruisci il tuo progetto


2
Ho appena riscontrato questo problema e ho installato l'ultima versione del pacchetto NuGet di Microsoft.AspNet.WebApi.Client e poi ho visto System.Net.Http.Formatting nel mio elenco di riferimenti.
Ewomack,

Ho provato tutto il resto. Questo è l'unico che ha funzionato per me.
Timothy Kanski,

Ha funzionato per me. Assicurati di installare la versione giusta.
CrusherJoe,

1
Questa soluzione ha funzionato dopo che ho aggiornato my Web.Config bindingRedirectper System.Net.Http.Formattinge System.Web.Httpcon quello nuovo installato dal comando precedente ... ovvero è passato da <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>a<bindingRedirect oldVersion="0.0.0.0-4.0.30319" newVersion="4.0.30319"/>
Serj Sagan il

È allora che a molti di noi mancava semplicemente il pacchetto NuGet Microsoft.AspNet.WebApi.Client?
carlin.scott

27

Ho trovato un extra

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.2.28.0" newVersion="2.2.28.0" />
  </dependentAssembly>

nel mio web.config. rimosso per farlo funzionare. qualche altro pacchetto che ho installato e poi rimosso ha causato il problema.


come fai a sapere qual è il token pubblico della versione? b03f5f7f11d50a3a
eran otzap,

Viene aggiunto automaticamente dal comando della console di gestione dei pacchetti: Add-BindingRedirect *
Simon Hughes,

18

user3919888 mi ha indicato la giusta direzione, ma dovevo correre Update-Package -reinstall Microsoft.AspNet.WebApi.Clientnella console di Package Manager. L'installazione di base da sola non riconosce il problema ma riconosce che il pacchetto è già installato e non lo sovrascrive.

Sto postando questa risposta perché ciò accade così raramente che finisco con Google e raggiungo questa pagina prima di ricordare cosa ho fatto l'ultima volta.


16

Rimuovere il seguente web.configproblema ha risolto il mio problema. Si noti che in questo progetto non ho usato i componenti WebApi. Quindi per altri questa soluzione potrebbe non funzionare come previsto.

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>

come fai a sapere qual è il token pubblico della versione?
Eran Otzap,

Come so è un token pubblico di tutte le dll Microsoft indipendentemente dalla loro versione.
Mahmoud Moravej,

Per essere divertente ho aggiunto queste righe e mi ha aiutato.
Krzysztof Madej,

Ciò ha risolto il problema anche per me.
Vishal,

Questo ha risolto anche il mio problema. Avevo convertito un vecchio progetto di sito Web in un'applicazione Web. Il file Web.config faceva riferimento alla versione 5.2.7, mentre il pacchetto NuGet installato era 5.2.3. L'eliminazione da Web.config ha corretto l'errore.
Cesar Daniel,

9

Per coloro che utilizzano il progetto .NET Standard in combinazione con i progetti .NET Framework :

Nel modo .NET Standard, i pacchetti inclusi in un progetto .NET Standard verranno utilizzati correttamente in altri progetti .NET Core e .NET Standard.

Sono nel modo .NET Framework, se ti riferisci a un progetto .NET Standard da un progetto .NET Framework (MVC), devi scaricare e installare manualmente gli stessi pacchetti nuget.

Quindi la risposta alla mia domanda era che dovevo scaricare e installare Microsoft.AspNet.WebApi.Clientnel progetto web (.NET Framework) che utilizza un progetto .NET Standard dove Microsoft.AspNet.WebApi.Clientè necessario. In effetti, avevo già installato questo, ma c'era una differenza di versione.

Aggiungo solo questa risposta per far vedere agli altri, potrebbe non rispondere direttamente alla domanda di OP ma mi ha fatto risparmiare tempo controllando prima questo invece di fare le risposte più votate.


1
Sto usando .NET Core e ho trovato una guida per deridere HttpClient su gingter.org/2018/07/26/… . Seguire quella guida mi ha dato il problema descritto nella domanda di OP. E la tua soluzione ha risolto il problema :)
Thorkil Værge,

Questo è ciò che ha funzionato per me. Ho provato l'approccio consigliato, rimuovendo e ripristinando tutti i pacchetti, ma alla fine ho dovuto usare Nuget per installare Microsoft.AspNet.WebApi.Client assicurandomi che fosse la versione di cui avevo bisogno e che tutto andasse bene,
TH Todorov

Ottima risposta - Stavo iniziando a pensare che avrei dovuto riportare tutto al Framework!
d219

6
  1. Rimuovi tutti i riferimenti di codice a System.Net.*
  2. Disinstalla: pacchetto Microsoft.AspNet.WebApie sue dipendenze.
  3. Reinstalla tutto: pacchetto Microsoft.AspNet.WebApie sue dipendenze.
  4. Pulisci e ricostruisci il tuo progetto

Grazie! Mi hai salvato dopo 2 giorni di tentativi disperati. Mi ha quasi fatto impazzire.
Marek Dorda,

5

Come originariamente suggerito in un commento di GeoMac e documentato sui documenti di NuGet, quanto segue ha funzionato per me quando nessuna delle altre risposte ha funzionato:

Strumenti / NuGet Gestione pacchetti / Console Gestione pacchetti

Update-Package -ProjectName MyProjectName -reinstall

Ho Visual Studio 2015. Questo è quello che dovevo fare, risolto istantaneamente.
Damian C

3

Nel mio caso nessuna delle soluzioni di cui sopra ha funzionato. Ho risolto facendo clic destro sul riferimento

System.Net.Http.Formatting

da Visual Studio e impostando la proprietà Copia locale su true .

Spero che questo sia utile in qualche modo.


2
l'ho fatto e succede ancora
eran otzap il

2

Ciò che ha risolto questo fastidioso errore per me è stato solo chiudere Visual Studio e riaprirlo. Quindi ricostruire la soluzione e tutto ha funzionato di nuovo. Ci scusiamo per la risposta schifosa, ma penso che valga la pena rispondere perché me l'ha risolto.


1
Anche per me è bastato questo
Steve Vermeulen,

1

Per me è stato semplice come

  1. Elimina Microsoft.AspNet.WebApi.Clientdalla cartella dei pacchetti in Esplora risorse
  2. Apri Strumenti> Gestione pacchetti NuGet> Console Gestione pacchetti
  3. Fai clic sul pulsante "Ripristina"

1

Nel mio caso, nessuna delle precedenti ha funzionato, tuttavia, la sostituzione di 5.2.3.0 con 4.0.0.0 ha risolto il problema.


1

Stavo affrontando lo stesso problema perché

System.Net.Http.Formatting

la versione scritta all'interno di webconfig era 5.0.3 ma all'interno della cartella bin la libreria System.Net.Http.Formatting versione dll era 4.0.2

quindi ho appena sostituito con lo stesso dato all'interno del cestino

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

fai questo progetto pulito e costruiscilo


0

Probabilmente è necessario impostare il riferimento della libreria come "Copia locale = True" nella finestra di dialogo delle proprietà. Su Visual Studio fai clic su "Riferimenti", quindi fai clic con il pulsante destro del mouse sul riferimento mancante, dal menu contestuale fai clic su Proprietà, dovresti vedere copia impostazioni locali.


0

Per me l'aggiunta di alcune righe sottostanti in WebApi.config funziona come dopo l'aggiornamento del nuovo pacchetto nuget non ha funzionato

var setting = config.Formatters.JsonFormatter.SerializerSettings;
setting.ContractResolver = new CamelCasePropertyNamesContractResolver();
setting.Formatting = Formatting.Indented;

Non dimenticare di aggiungere lo spazio dei nomi:

using Newtonsoft.Json.Serialization; 
using Newtonsoft.Json;

assicurati di controllare la dipendenza del progetto facendo clic con il pulsante destro del mouse sul file della soluzione e quindi in Proprietà comuni-> dipendenze del progetto controlla il progetto da cui viene generato l'errore o controlla il nome del progetto da cui dipende la soluzione
ashish Vicky

0

Quello che ho fatto per risolvere questo problema è

  1. Vai a Gestione pacchetti NuGet.

  2. Seleziona aggiornamenti (dal pannello di sinistra)

  3. Aggiorna i componenti WebApi

  4. Successivamente, il progetto è stato eseguito senza errori.


0

VS2019: Strumenti -> Gestione pacchetti Nuget -> Impostazione Gestione pacchetti -> nella sezione Ripristino pacchetti, selezionare 2 opzioni. Dopodiché, vai alla cartella dei pacchetti di progetto ed elimina tutte le cartelle secondarie all'interno (per non più errori) Quindi ricostruisci la soluzione, Nuget scaricherà nuovamente tutti i pacchetti e il progetto dovrebbe essere eseguito senza alcun riferimento.


0

Ho avuto il problema con un progetto ASP.NET in VS 2019.

Un altro sintomo era che alcuni riferimenti (System.Web.Http) erano contrassegnati come difettosi nell'elenco dei riferimenti del progetto (Esplora soluzioni)

La mia soluzione:

  1. Elimina i riferimenti errati in Progetto -> Riferimenti (clic destro, ...)
  2. Costruire
  3. Vai agli errori di compilazione "Impossibile trovare il tipo o il nome [...] dello spazio dei nomi" o simili
  4. Utilizzare il "Mostra potenziali correzioni" -> Installa pacchetto

La causa:

Guardando la differenza nel file csproj ho potuto vedere il motivo del problema. Qualcuno è riuscito a fare riferimento a una DLL nella cartella dei file del programma Windows!

<Reference Include="System.Web.Http">
  <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>
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.