7

Sto costruendo un'app MVC4 modulare, in cui ogni modulo (= area) è una libreria di classi. Modelli e controllori compilano in .dll, le viste vengono copiate nella cartella appropriata. In fase di esecuzione, tutto funziona correttamente. In fase di progettazione è rimasto un problema fastidioso: quando si modifica una vista del rasoio in una libreria di classi, Visual Studio non riconosce lo spazio dei nomi System.Web.Optimization.Ottenere System.Web.Optimization per funzionare in una vista del rasoio all'interno di una libreria di classi

The name "Styles" does not exist in the current context. 
The name "Scripts" does not exist in the current context. 

Ho provato ad aggiungere il gruppo alla sezione system.web/compilazione nella radice e web.config interno:

<add assembly="System.Web.Optimization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 

ho provato senza la versione specifica, anche. Entrambi i metodi non ha risolto il problema, ma innescato un errore runtime asp.net (visibile nella prima riga della vista rasoio):

Could not load file or assembly 'System.Web.Optimization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. 

L'assemblaggio viene fatto riferimento nel progetto e 'copia locale' è impostato a 'True'. Viene anche aggiunto come spazio dei nomi nella sezione di configurazione del rasoio.

Sospetto che sia un problema generale che incontrerò con altri assembly in futuro.

Modifica: Ho eseguito l'installazione generale per ottenere Intellisense in una vista del rasoio all'interno di una libreria di classi. Tutto funziona finora, ad eccezione del fatto che VS2010 non riconosce lo spazio dei nomi di ottimizzazione.

risposta

7

aggiungere un file web.config alla radice del vostro progetto libreria di classi (quello che contiene i punti di vista Razor) con i seguenti contenuti (tratto da this blog post):

<configuration> 
    <configSections> 
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    </sectionGroup> 
    </configSections> 

    <system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <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" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

    <system.web> 
    <compilation targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     </assemblies> 
    </compilation> 
    </system.web> 
</configuration> 

Ciò ingannare Visual Studio a pensare che è un progetto web e abilita Intellisense.

+0

L'ho già fatto. Intellisense funziona bene, ad eccezione di System.Web.Spazio dei nomi di ottimizzazione. – Marcel

+1

Hai notato '' nel mio esempio? Ce l'hai nel tuo? –

+0

Sì, ho. Ho dimenticato di dirlo nella domanda, mi dispiace! – Marcel

7

Ho riscontrato questo errore nella vista preinstallata nel progetto asp mvc per la risoluzione che ho installato Microsoft.Web.Optimization con nuget.

Dal menu Strumenti, selezionare Gestore pacchetti libreria e quindi fare clic su Gestione gestore pacchetti. Digitare il seguente comando per aggiornare la legatura e Minification:

Install-Package Microsoft.Web.Optimization -Pre 

alcuni supplementi qui http://forums.asp.net/t/1812274.aspx/1

+0

dove devo inserire questo pacchetto di installazione? – guiomie

+0

nuget package manager studio lo ha nel menu degli strumenti –

1

@Vladimir, sto usando Visual Studio 2013, e ho dovuto cambiare un po 'la linea in:

rateale Pacchetto Microsoft.AspNet.Web.Optimization

Questo lo ha risolto per me.

0

la seguente:

Install-Package Microsoft.AspNet.Web.Optimization 

funziona bene per me.

0
Install-Package Microsoft.AspNet.Web.Optimization -version 1.1.0.0 

se il progetto richiede una versione specifica, aggiungere -version ... per scegliere la versione reale. Ti sarà utile.

Problemi correlati