11

ho un problema che sembra essere stata qui riportata:Razor avviso del compilatore/Errori - ASP.NET MVC 4

Need razor view engine auto-complete to work in a class library?

Il mio problema è il seguente avviso:

G:\Accountable\Accountable\Views\LedgerUser\EditorTemplates\LedgerServiceViewModel.cshtml: ASP.NET runtime error: There is no build provider registered for the extension '.cshtml'. You can register one in the section in machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'.

Questo problema è evidente in tutte le mie opinioni. Immagini di esempio qui sotto.

enter image description here

enter image description here

enter image description here

Ora tutti i messaggi e riferimenti online che ho trovato fa riferimento per l'aggiunta di vari web.config (come detto nel post precedente) opzioni, ma questo doesn Sembra che funzioni, poiché ho queste configurazioni predefinite nel progetto. Qui sono i miei Configs Web:

Main Web.config

View root Web Config

penso che questo problema forse mentre im anche ottenere i seguenti errori del compilatore sui Visualizzazioni:

The name 'Html' does not exist in the current context

enter image description here

Cosa sto sbagliando?

+0

Quasi duplicato di questo: http: // stackoverflow.it/questions/4158573/need-razor-view-engine-auto-complete-to-work-in-a-class-library –

+0

Ehi David. Grazie per il commento. Sì ho fatto riferimento a quello nel post di cui sopra. Non riesco a vedere alcuna differenza con quelle predefinite create nel Progetto. – garfbradaz

risposta

21

Arrrgghhh avevo perso quanto segue dalla ROOT web.config:

<compilation debug="true" targetFramework="4.0"> 
    <!-- New --> 
    <assemblies> 
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    </assemblies> 
</compilation> 

Questo ha permesso risolto l'errore e mi ha permesso di utilizzare Intellisense all'interno della vista.

+1

Non so davvero perché questo l'ha risolto, ma è successo. Sta funzionando bene e poi ho invertito un pezzo molto piccolo in un file in git e il mio intero progetto è esploso. Questo sembrava risolverlo. –

+1

Questo ha funzionato per mvc5, basta cambiare la versione a '3.0.0.0' e la chiave pubblica a quella nel proprio web.config (è alla fine del file). – VSG24

+0

in MVC 5 ha aggiornato tutte le versioni e le chiavi ma l'errore è ancora qui. –

3

Rimettendo le seguenti linee in Web.config radice fisse:

<system.web> 
    <pages> 
     <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Optimization" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages" /> 
     </namespaces> 
    </pages> 
</system.web> 
2

ho ottenuto che funziona semplicemente scarico e di ricarico del progetto. Tutti gli spazi dei nomi sopra erano già presenti nella root web.config e stavo ancora riscontrando questo problema.

2

La rimozione dei file temporanei di framework asp.net funziona per me.

Arrestare IIS e rimuovere tutto sotto questa cartella:

C:\Windows\Microsoft.NET\Framework64\[framework version]\Temporary ASP.NET Files

quindi riavviare IIS. Bam!

+1

Iniziare a ricevere questo errore senza un motivo apparente - il mio progetto funzionava da anni in precedenza. Questo ha funzionato per me, grazie! – Jesse

0

Ho provato riavviando IIS, rimosso i file temporanei ASP.NET e cambiando il tag di compilazione nel file di configurazione web. Nessuno di loro lavora per me.

Ho risolto il problema rimuovendo e aggiungendo System.Web.MVC al progetto.

Nel mio caso la sintassi del rasoio è evidenziata in rosso.