2015-06-30 13 views
11

C'è un problema - solo quando chiedo una sola Controller-Eccezione Impossibile caricare il file o l'assembly 'System.Web.Mvc, Version = 4.0.0.1,

ottengo l'eccezione:

Impossibile caricare il file o l'assembly 'System.Web.Mvc, Version = 4.0.0.1, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' o una delle sue dipendenze. La definizione manifest di assembly individuato non corrisponde al riferimento all'assembly. (Eccezione da HRESULT: 0x80131040

quindi è strano perché Nel mio file di configurazione vedo che la versione è 4.0.0.0 e e tutti gli altri regolatori sono belle e solo quando ho caricato l'applicazione sul server di questo

+0

Qual è la differenza tra questo * controller * e altri * controller *? – christiandev

+0

Non c'è differenza !!! E non riesco a capire perché! –

+1

@MilkaSalkova Alcune volte gli aggiornamenti delle patch di Windows possono causare questo tipo di problemi. Hai provato ad aggiornare il framework MVC usando Nuget nel tuo progetto e anche a controllare quale versione MVC è installata sul server e prova ad aggiornare anche quella? –

risposta

15

Questo è un problema noto Sembra che sia stata eseguita la migrazione di recente da 3.0 a 4.0 oppure questa applicazione è un nuovo clone dal repository.Il singolo controller potrebbe non aver ripristinato Nuget. Ho anche affrontato questo problema. Ho ottenuto questo msdn link e la navigazione aveva una soluzione. Ecco i passaggi indicati

Il problema può essere risolto mediante l'attuazione di una delle seguenti soluzioni :

  1. (preferito) Installare Microsoft.AspNet.Mvc dalla galleria NuGet (questo installerà un legame reindirizzamento nel web.config). Si può fare questo dal gestore di pacchetti NuGet o la console NuGet all'interno di Visual Studio :

    Installare-Pacchetto Microsoft.AspNet.Mvc -Version -Project PROJECTNAME

    MVC 4 Versione: 4.0. 40804,0

    MVC 3 versione: 3.0.50813.1

  2. aggiornare manualmente il riferimento al System.Web.MVC.dll (non usare quello nella GAC).

    Provare la finestra di dialogo Aggiungi riferimento -> Assiemi -> Estensioni.

In entrambi i casi assicurarsi che la proprietà del progetto locale Copia per l'assemblaggio è impostata su true in modo che finisce nella cartella bin, che è necessaria per la distribuzione. C'è un bug noto NuGet che ripristina la copia bandiera locale: https://nuget.codeplex.com/workitem/4344

Installare Nuget Pacchetto Microsoft.AspNet.Mvc per tutto il progetto fa riferimento a System.Web.Mvc dll Spero che questo risolve il problema

+0

Il problema era che il controller restituisce una vista fortemente tipizzata e nel tipo da cui la vista è - Io uso l'attributo Bind che è in System.Web.Mvc - questo era il problema –

0

Ho ricevuto questo errore di compilazione su un agente VSO grazie all'assembly ASP.Net che risolve le stranezze. Ho modificato alcune delle mie configurazioni di build e Visual Studio ha modificato la directory di output per il progetto MVC su \bin\x86\Debug o qualcosa di simile.

Questo mi aveva morso prima e mi sono ricordato che ASP.Net vuole essere costruito SOLO per \bin.

Quindi, quando si ottiene alcun tipo di "riferimento non è stato trovato" il tempo di costruzione, ricordatevi di controllare che la directory di output build è solo \bin:

enter image description here

Maggiori informazioni sul problema qui: Changing output directory for asp.net project in Visual Studio

Spero che questo aiuti qualcuno.

0

È possibile fare riferimento a ASP.NET MVC come riferimento a GAC, ma può succedere che diversi sviluppatori dispongano di versioni diverse di MVC.

Rimuovere i riferimenti ad ASP: NET MVC e aggiungere ASP.NET MVC come pacchetto nuget.

Problemi correlati