Visual Studio 2015 Razor 视图 MVC 类型无法识别

Visual Studio 2015 Razor View MVC Types not recognized

我安装了 Visual Studio 2015 并重新启动。 "MVC" 类型在 2015 年无法识别,但在 2013 年仍可识别。这是我的 "Views" 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.Mvc 的旧版本正在使用中(根据 VS 2015 意见)。

我们认为这些问题的发生是因为您当前使用的是 MVC 4,而 Visual Studio2015 不包含 MVC 4 工具。仅包含 MVC 5 和 MVC 6 工具。如果您实际上正在使用 MVC 5 并看到这些问题,请务必告诉我们。您可以通过打开 packages.config 并滚动到 Microsoft.AspNet.Mvc 的条目来确认您使用的是 MVC 4。如果列出的版本以“4”开头,则表示您使用的是 MVC 4。

话虽如此,我们感谢您的反馈以及您对 MVC 4 的投资。根据您和其他客户的反馈,我们正在研究使 MVC 4 工具可用于 Visual Studio 的可能性2015 年。与此同时,尽管存在工具问题,您的项目仍将在 Visual Studio 2015 年编译并 运行。或者,您可以将 Visual Studio 2013 和 2015 并排安装在您的计算机上。这样,您可以对 MVC 4 项目使用 Visual Studio 2013,对 MVC 5 及更高版本的项目使用 Visual Studio 2015。

它对我不起作用。这个问题似乎有几个与 web.config 相关的根本原因。

另一个问题是 root web.config 编译版本不匹配。

<compilation debug="true" targetFramework="4.5.2">

<httpRuntime executionTimeout="600" maxRequestLength="10240" requestValidationMode="2.0" targetFramework="4.5.2" />

如果 httpruntime 版本与程序集的版本不同,则可能会发生这种情况。

我已经尝试了很多方法来解决这个问题。仅举几例:

  1. 选中和取消选中工具->文本编辑器->所有语言->自动列出成员和参数信息
  2. 正在重启Visual Studio
  3. 正在删除各种 folders:bin、*.sou、%AppLocacalData%\Temp 等
  4. 中的各种文件

没有任何效果。

然后我转到控制面板和 运行 Visual Studio 设置并单击 'Repair' 按钮。进程完成后,它提出重新启动机器,之后 intellisense 开始在剃须刀视图中再次工作。

来自Chris Zhao on asp.net:您可以考虑卸载VS 2015,然后重新安装,并检查是否选择了"Web Developer tools" [在安装过程中进入自定义以确保它被选中。

我这样做了,去掉了 Viewbag 下的红色下划线。

如果您从 MVC4 升级到 MVC5:在 Views/web.config 中更改

   <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

   <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

我发现我需要将 Views/Web.config 文件中处理配置部分的程序集的版本提高到 3.0.0.0:

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

之前都是2.0.0.0.