7

Estoy construyendo una aplicación modular MVC4, donde cada módulo (= área) es una biblioteca de clases. Los modelos y controladores se compilan en .dll, las vistas se copian en la carpeta apropiada. En tiempo de ejecución, todo funciona bien. En el momento del diseño, queda un problema molesto: al editar una vista de afeitar dentro de una biblioteca de clase, Visual Studio no reconoce el espacio de nombres System.Web.Optimization.Obteniendo System.Web.Optimization para trabajar en una vista razor dentro de una biblioteca de clases

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

He intentado añadir el conjunto a la sección system.web/compilación en la raíz y el web.config interno:

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

lo intenté sin la versión específica, también. Ambos métodos no resuelven el problema, pero provocaron un error de tiempo de ejecución asp.net (visible en la primera línea de la vista de afeitar):

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. 

El montaje se hace referencia en el proyecto y 'copia local' está ajustado a 'Verdadero'. También se agrega como un espacio de nombres en la sección de configuración de la máquina de afeitar.

Sospecho que es un problema general que encontraré con otros ensambles en el futuro.

Edit: Hice la configuración general para obtener Intellisense en una vista de máquina de afeitar dentro de una biblioteca de clases. Todo funciona hasta ahora, excepto que VS2010 no reconoce el espacio de nombres de optimización.

Respuesta

7

añadir un archivo web.config a la raíz de su proyecto de biblioteca de clases (la que contiene los puntos de vista de afeitar) con el siguiente contenido (tomado de 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> 

Esto engañar a Visual Studio para que piense que es un proyecto web y habilita Intellisense.

+0

Ya lo hice. Intellisense funciona bien, excepto System.Web.Espacio de nombres de optimización – Marcel

+1

¿Notaste '' en mi ejemplo? ¿Lo tienes en el tuyo? –

+0

Sí, tengo. Olvidé mencionar eso en la pregunta, ¡lo siento! – Marcel

7

Tuve este error en la vista preconstruida en el proyecto asp mvc para la resolución que he instalado Microsoft.Web.Optimization con nuget.

En el menú Herramientas, seleccione Library Package Manager y luego haga clic en Package Manager Console. Introduzca el siguiente comando para actualizar la paquetización y Minificación:

Install-Package Microsoft.Web.Optimization -Pre 

algunos accesorios de venta aquí http://forums.asp.net/t/1812274.aspx/1

+0

¿dónde ingreso este Install-Package? – guiomie

+0

nuget package manager studio lo tiene en el menú de herramientas –

1

@Vladimir, estoy utilizando Visual Studio 2013, y tuvo que cambiar ligeramente su línea a:

Install Paquete Microsoft.AspNet.Web.Optimization

Esto lo arregló para mí.

0

la siguiente:

Install-Package Microsoft.AspNet.Web.Optimization 

funciona bien para mí.

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

si su proyecto necesita una versión especificada, por favor agregue -version ... para elegir la versión verdadera. Te será útil.

Cuestiones relacionadas