2012-04-20 13 views
5

Ho aggiornato la mia app Web da MVC3 a 4 di recente creando una nuova applicazione Web in MVC4 e copiando tutti i file e infine unendo il web.config. Tutto funziona bene con l'app web esistente, tuttavia ho notato un errore molto strano oggi - se provo a creare un nuovo controller API con l'implementazione fittizia predefinita, e poi navigo su quell'api (ad esempio/api/eventi), Ottengo un errore Could not load type. La cosa strana è che se ricostruisco l'applicazione, e ha colpito di nuovo l'URL, sembra essere un assembly diverso è lamentarsi, soprattutto si alterna tra queste 2:Aggiornamento manuale di un'app Web MVC da 3 a 4, non è possibile aggiungere controller API

Could not load type 'System.Web.Razor.Parser.SyntaxTree.CodeSpan' from assembly 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. 

e

Could not load file or assembly 'Microsoft.Scripting, Version=1.1.0.20, Culture=neutral, PublicKeyToken=7f709c5b713576e1' or one of its dependencies. The system cannot find the file specified. 

mio web.config contiene le seguenti informazioni di associazione di assembly:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <!--<assemblyIdentity name="FluentValidation" publicKeyToken="a82054b837897c66" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="3.2.0.0" />--> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.0.8.0" newVersion="4.0.8.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

E il mio packages.config sembra che ha tutti i bit a destra in esso:

<package id="AspNetMvc" version="4.0.20126.16343" /> 
    <package id="AspNetRazor.Core" version="2.0.20126.16343" /> 
    <package id="AspNetWebApi" version="4.0.20126.16343" /> 
    <package id="AspNetWebApi.Core" version="4.0.20126.16343" /> 
    <package id="AspNetWebPages.Core" version="2.0.20126.16343" /> 
    <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" /> 
    <package id="Microsoft.Web.Optimization" version="1.0.0-beta" /> 
    <package id="System.Net.Http" version="2.0.20126.16343" /> 
    <package id="System.Net.Http.Formatting" version="4.0.20126.16343" /> 
    <package id="System.Web.Http.Common" version="4.0.20126.16343" /> 
    <package id="System.Web.Providers" version="1.1" /> 
    <package id="System.Web.Providers.Core" version="1.0" /> 

Ho anche provato a copiare il mio web.config con un "vanilla" uno da una nuova applicazione mvc4 web, che mi dà ancora lo stesso errore (non poteva caricare il file o Microsoft.Scripting montaggio)

+0

avete un assembly di nome Microsoft.Scripting, non è vero? E hai una classe CodeSpan nel namespace System.Web.Razor.Parser.SyntaxTree? –

risposta

7

provare a rimuovere queste righe da web.config

<dependentAssembly> 
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
</dependentAssembly> 
Problemi correlati