【问题标题】:Razor Compiler Warning/Errors - ASP.NET MVC 4Razor 编译器警告/错误 - ASP.NET MVC 4
【发布时间】:2012-10-07 15:03:55
【问题描述】:

我有一个似乎已在此处报告的问题:

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

我的问题是以下警告:

G:\Accountable\Accountable\Views\LedgerUser\EditorTemplates\LedgerServiceViewModel.cshtml: ASP.NET 运行时错误:没有为 扩展名“.cshtml”。您可以在 machine.config 或 web.config 中的部分。 确保它有一个 BuildProviderAppliesToAttribute 属性 包括值“Web”或“All”。

这个问题在我所有的观点中都很明显。下面的示例图片。

现在我发现的所有在线帖子和参考资料都引用了添加各种 Web.config(如上一篇文章中所述)选项,但这似乎不起作用,因为我在项目中默认了这些配置。这是我的网络配置:

Main Web.config

View root Web Config

我认为这个问题可能是因为我在视图上也遇到了以下编译器错误:

当前上下文中不存在名称“Html”

我做错了什么?

【问题讨论】:

  • 这个几乎是重复的:stackoverflow.com/questions/4158573/…
  • 嘿大卫。感谢您的评论。是的,我在上面的帖子中提到了这一点。我看不出与项目中创建的默认设置有任何区别。

标签: asp.net-mvc razor compiler-errors asp.net-mvc-4 compiler-warnings


【解决方案1】:

Arrrgghhh 我错过了 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>

这允许修复错误并允许我在视图中使用 Intellisense。

【讨论】:

  • 我真的不知道为什么这会修复它,但它确实如此。它工作正常,然后我在 git 中的一个文件上反转了一个非常小的块,我的整个项目都炸毁了。这似乎解决了它。
  • 这适用于 mvc5,只需将版本更改为 3.0.0.0 并将公钥更改为 web.config 中的那个(位于文件末尾)。
  • 在 MVC 5 中更新了所有版本和密钥,但错误仍然存​​在。
【解决方案2】:

在根 Web.config 中放回以下行已修复:

<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>

【讨论】:

    【解决方案3】:

    我通过简单地卸载和重新加载项目来使其工作。上面的所有命名空间都已经在根 web.config 中,我仍然遇到这个问题。

    【讨论】:

      【解决方案4】:

      删除临时 asp.net 框架文件对我有用。

      停止 IIS 并删除此文件夹下的所有内容:

      C:\Windows\Microsoft.NET\Framework64\[框架版本]\Temporary ASP.NET Files

      然后重新启动 IIS。砰!

      【讨论】:

      • 无缘无故地开始收到此错误 - 我的项目已经工作多年了。这对我有用,谢谢!
      【解决方案5】:

      我尝试重新启动 IIS,删除临时 ASP.NET 文件并更改 Web 配置文件中的编译标记。它们都不适合我。

      我通过删除 System.Web.MVC 并将其添加到项目中解决了这个问题。

      在我的例子中,Razor 语法以红色突出显示。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-30
        • 1970-01-01
        相关资源
        最近更新 更多