我建立一个模块化MVC4应用程序,其中,每个模块(=区域)是一个类库。 模型和控制器编译成.dll文件,意见被复制到相应的文件夹。 在运行时,一切工作正常。 在设计时,还剩下一个恼人的问题:当一个类库中编辑Razor视图时,Visual Studio不承认System.Web.Optimization命名空间。
The name "Styles" does not exist in the current context.
The name "Scripts" does not exist in the current context.
我尝试添加的组件,以在根和内web.config中的System.Web /汇编部分:
<add assembly="System.Web.Optimization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
我试了一下没有具体的版本了。 这两种方法都没有解决问题,反而引发一个asp.net运行时错误(在Razor视图的第一行可见):
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.
该组件项目中所引用和“复制本地”设置为“真”。 它也添加为剃刀配置部分命名空间。
我怀疑这是一个普遍的问题,我会在未来的其他组件遇到的问题。
编辑:我做了一般设置获得智能感知在类库中的Razor视图去。 一切正常,到目前为止,除了VS2010不承认优化命名空间。
一个添加web.config
文件到您的类库项目具有以下内容(摘自(包含剃刀意见之一)的根本博客文章 ):
<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>
这将欺骗的Visual Studio,以为它是一个Web项目,并启用智能感知。
我在我的决心已经安装Microsoft.Web.Optimization用的NuGet ASP MVC项目已在前期建造鉴于此错误。
从工具菜单,选择库包管理器,然后单击程序包管理器控制台。 输入以下命令来更新捆绑和缩小:
Install-Package Microsoft.Web.Optimization -Pre
这里有些additionals http://forums.asp.net/t/1812274.aspx/1
@Vladimir,我使用Visual Studio 2013,并有轻微改变你的线路:
安装,包装Microsoft.AspNet.Web.Optimization
这个固定为我。
下列:
Install-Package Microsoft.AspNet.Web.Optimization
对我来说工作正常。
Install-Package Microsoft.AspNet.Web.Optimization -version 1.1.0.0
如果你的项目需要指定的版本,请加-version ...选购真正的版本。 这将是对你有帮助。
文章来源: Getting System.Web.Optimization to work in a razor view within a class library