MVC Razor视图没有Intellisense

时间:2016-02-12 16:15:51

标签: c# asp.net-mvc visual-studio razor visual-studio-2015

我在MVC 5,.NET 4.6,Visual Studio Professional 2015上。我偶尔会遇到一个问题,即VS决定不再想要查看某些引用。它通常与MVC直接相关。目前的问题是The type 'WebViewPage<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

过去通过卸载/重新安装MVC NuGet包解决了这个问题,但这次没有用。我已经尝试了以下所有方法,但没有任何效果。该项目编译和运行没有任何问题,它只是有问题的Intellisense。这些步骤中的每一步都在关闭所有视图的情况下完成,之后重新打开。每个人都在第二次关闭VS之间进行了测试。

  • 确保实际引用并找到System.Web.Mvc(引用列表中没有黄色感叹号)。
  • 卸载/重新安装MVC。
  • 确保System.Web.Mvc个文件(视图文件夹和根级别)中都引用了Web.config,并且这些引用具有正确的版本5.0.0.0和正确的PublicKeyToken
  • 确保引用设置为Copy Local,并且实际上在构建项目时正在复制。
  • 从解决方案中每个项目的binobj文件夹中删除所有文件。
  • 确保解决方案中的所有项目都针对相同版本的.NET(4.6)。

我在Visual Studio程序包管理方面遇到很多问题....我如何修复VS,据说在视图中找不到引用,以便Intellisense再次工作?

1 个答案:

答案 0 :(得分:1)

在错误消息中,它说它找不到System.Web.Mvc, Version=5.2.3.0,然后你提到配置文件是System.Web.Mvc, Version=5.0.0.0

首先尝试在 web.config 视图配置文件中将所有System.Web.Mvc, Version=5.0.0.0更新为Version=5.2.3.0

[在视图配置文件的末尾有一个对库的引用: - )]

  

如果这不起作用,请试试这个:

首先备份您的配置文件 -

将项目从MVC4更新为MVC5后,我遇到了类似的问题。

问题是更新没有正确更新配置文件。

您可以使用最新版本创建新的MVC项目,并从新项目中复制配置文件。

您可以复制<runtime>文件中的Web.config部分。

然后复制整个Views config文件

<?xml version="1.0"?>

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

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.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" />

        <!--Then copy over your View References-->

      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>

  <system.web>
    <compilation>
      <assemblies>
        <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
    </compilation>
  </system.web>
</configuration>