2013-02-13 8 views
9

Il progetto funziona bene a livello locale, la sua solo quando pubblicai ricevo il seguente errore:Errore MVC4 Azure Editoria - Impossibile caricare il file o l'assembly 'System.Web.Razor'

Impossibile caricare il file o l'assembly 'del sistema. Web.Razor 'o una delle sue dipendenze. La definizione manifest di assembly individuato non corrisponde al riferimento all'assembly. (Eccezione da HRESULT: 0x80131040)

Dopo aver passato le ultime ore a cercare su Google il problema sembra essere che un pacchetto di nuget che ho aggiunto al progetto faccia riferimento al rasoio 1 e abbia sovrascritto il mio rasoio 2 dll. Ho provato a copiare la DLL 2.0.0.0 rasoio in referenze invece di 1, ma l'errore persiste. Questo è dove il conflitto è mostrato nell'output dettagliata di costruzione:


C'era un conflitto tra "System.Web.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" e "Sistema. Web.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 ". 1> "System.Web.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" è stato scelto perché era primario e "System.Web.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 "non lo era. 1> Riferimenti che dipendono da "System.Web.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" [C: \ Programmi (x86) \ Microsoft ASP.NET \ Pagine Web ASP.NET \ v1 0,0 \ Assemblies \ System.Web.Razor.dll]. 1> C: \ Programmi (x86) \ Microsoft Pagine Web ASP.NET \ ASP.NET \ v1.0 \ Assemblies \ System.Web.Razor.dll 1> L'elemento del file di progetto include il riferimento causato "C: \ Programmi (x86) \ Microsoft Pagine Web ASP.NET \ ASP.NET \ v1.0 \ Assemblies \ System.Web.Razor.dll ". 1> System.Web.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL 1> Riferimenti che dipendono da "System.Web.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 "[C: \ Utenti \ Jack \ SkyDrive \ LessonUp.Current \ packages \ RazorEngine.3.0.8 \ lib \ net40 \ System.Web.Razor.dll]. 1> C: \ Users \ Jack \ SkyDrive \ LessonUp.Current \ packages \ Microsoft.AspNet.WebPages.2.0.20710.0 \ lib \ net40 \ System.Web.WebPages.Razor.dll 1> La voce del file di progetto include la causa riferimento "C: \ Users \ Jack \ SkyDrive \ LessonUp.Current \ packages \ Microsoft.AspNet.WebPages.2.0.20710.0 \ lib \ net40 \ System.Web.WebPages.Razor.dll". 1> System.Web.Mvc, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL 1> Recaptcha


Da lì si continua a elencare altri pacchetti seconda rasoio 2.

I pacchetti che ho aggiunto al progetto erano: Recaptcha, Recaptcha.mvcModel e Postal. Qualcuno ha un'idea di cosa posso fare per risolvere questo problema? Fammi sapere se posso fornire ulteriori informazioni che potrebbero portare a una soluzione.

risposta

0

finalmente ottenuto di nuovo questo ordinato, razor2.0 scaricato da NuGet. Sembrava ordinare il webconfig e correggere gli errori di dipendenza. È attivo e funzionante in azzurro, senza alcun problema.

5

Assicurarsi che la DLL 2.0 viene fatto riferimento e copia locale = true, quindi provare l'aggiunta di un gruppo di legame redirect nel web.config:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 
</assemblyBinding? 
+0

Ci era già un assembly vincolante come segue: L'ho cambiato in quello che hai postato e l'errore è rimasto lo stesso. Ho anche controllato le proprietà di riferimento e la copia locale era già impostata su "true". Altre idee? – jakhicks

+0

Grazie. L'impostazione 'Copia local = true' ha funzionato per me. Sembra che questo dovrebbe essere l'impostazione predefinita per i nuovi progetti, specialmente quando si aggiungono riferimenti con nuget. – ps2goat

+0

Ho cambiato la versione precedente in 1.0-3.0 e la nuova versione 4.0 - Questo ha risolto il problema per me dopo aver aggiornato un vecchio progetto VS2012 MVC3 in VS2013 in MVC4. – ppumkin

0

Controlla il file di progetto e web.config per vedere se sono stati letti da un pacchetto NuGet. Un problema noto è postal 0.8.0. Inserisce come dipendenza una versione beta di RazorVersion (anche se è stato filtrato per mostrare solo stable).Anche se si aggiorna RazorVersion alla versione più recente, che è stabile, il file di progetto finisce con riferimento alla versionee il proprio web.config ha associazioni di runtime non corrette.

Per correggere, eseguire una conversione sul file di progetto e su web.config rispetto a quelli di un progetto MVC 4 nuovo e vuoto. Quindi copiare l'elemento Reference corretto per System.Web.Razor dal file di progetto originale. In web.config, elimina l'elemento dependentAssembly per System.Web.Razor.

Ecco il testo TLDD (troppo pigro, non diffetto) per il file di progetto. Si spera che, nel momento in cui questo frammento di codice sia scaduto, le cause sottostanti saranno corrette.

<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <Private>True</Private> 
    <HintPath>..\packages\Microsoft.AspNet.Razor.2.0.20715.0\lib\net40\System.Web.Razor.dll</HintPath> 
</Reference> 

(Purtroppo, non è possibile risolvere il problema disinstallando e reinstallando con NuGet, perché dovreste disinstallare prima il pacchetto dipendente incriminato quali postale, che si ri-rompere le cose quando si reinstalla it.)

+0

Per i servizi postali, ora c'è un [bug report] (https://github.com/andrewdavey/postal/temi/49). –

1

Ho avuto lo stesso problema con Postal 0.8.0 in un progetto MVC4. Quando installi Postal con NuGet, sostituisce System.Web.Razor 2.0 con System.Web.Razor 1.0. Ho dovuto eliminare il riferimento a System.Web.Razor 1.0 e quindi aggiunto di nuovo in System.Web.Razor 2.0. È inoltre necessario impostare Copia locale a True nelle Proprietà per System.Web.Razor e naturalmente ricostruire il progetto. Dopo averlo fatto, VS2012 ha copiato lo System.Web.Razor.dll nella directory bin distribuita e il problema è stato risolto.

Postal aggiunge anche queste dipendenze a web.config. Li ho rimossi e funziona ancora correttamente.

<dependentAssembly> 
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="2.0.0.0" /> 
</dependentAssembly> 
<dependentAssembly> 
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" /> 
</dependentAssembly> 
<dependentAssembly> 
    <assemblyIdentity name="RazorEngine" publicKeyToken="9ee697374c7e744a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-3.0.8.0" newVersion="3.0.8.0" /> 
</dependentAssembly> 
0

originale ..

<dependentAssembly> 
    <assemblyIdentity name="System.Web.WebPages.Deployment" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 

Per qualche motivo attributo newVersion è stato fissato al 2.0.0.0 versione mentre dll era di 3.0.0.0

<dependentAssembly> 
    <assemblyIdentity name="System.Web.WebPages.Deployment" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
    </dependentAssembly> 

Than ha funzionato

Problemi correlati