7

我正在构建一个模块化 MVC4 应用程序,其中每个模块(=area)都是一个类库。模型和控制器编译到 .dll 中,视图被复制到相应的文件夹中。在运行时,一切正常。在设计时还有一个烦人的问题:在类库中编辑剃刀视图时,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/compilation 部分:

<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 配置部分。

我怀疑这是我将来在其他程序集中会遇到的普遍问题。

编辑:我进行了一般设置,以使 Intellisense 在类库中的剃刀视图中运行。到目前为止一切正常,除了 VS2010 不识别优化命名空间。

4

5 回答 5

7

web.config在您的类库项目(包含 Razor 视图的项目)的根目录中添加一个文件,其中包含以下内容(摘自这篇博文):

<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 项目并启用 Intellisense。

于 2012-07-21T09:10:37.033 回答
7

我在 asp mvc 项目的预构建视图中遇到了这个错误,以解决我用 nuget 安装了 Microsoft.Web.Optimization 的问题。

从工具菜单中,选择库包管理器,然后单击包管理器控制台。输入以下命令以更新捆绑和缩小:

Install-Package Microsoft.Web.Optimization -Pre

这里有一些补充http://forums.asp.net/t/1812274.aspx/1

于 2012-10-14T19:20:28.810 回答
1

@Vladimir,我正在使用 Visual Studio 2013,并且不得不将您的行稍微更改为:

安装包 Microsoft.AspNet.Web.Optimization

这为我修好了。

于 2014-02-25T04:38:07.870 回答
0

以下:

Install-Package Microsoft.AspNet.Web.Optimization

对我来说很好。

于 2015-02-10T11:15:36.960 回答
0
Install-Package Microsoft.AspNet.Web.Optimization -version 1.1.0.0

如果您的项目需要指定版本,请添加 -version... 以选择真实版本。这将对您有所帮助。

于 2018-02-26T06:57:23.547 回答