Asp.net mvc ASP.NET MVC 4项目-Razor intellisense已丢失

Asp.net mvc ASP.NET MVC 4项目-Razor intellisense已丢失,asp.net-mvc,visual-studio-2010,asp.net-mvc-4,razor,Asp.net Mvc,Visual Studio 2010,Asp.net Mvc 4,Razor,我最近将一个ASP.NET MVC项目从v3更新到v4,现在我的.cshtml Razor视图在Visual Studio中编辑时失去了intellisense。关键字和助手属性,如@model、@Url、@Html等,无法识别,并且在VS中产生错误。运行时,应用程序本身工作正常 我已经尝试了各种在线来源的建议解决方案,包括SO,其中大部分涉及对web.config的调整。我已经看过了,我非常确定我的配置设置对于MVC 4是正确的: <configuration> <c

我最近将一个ASP.NET MVC项目从v3更新到v4,现在我的.cshtml Razor视图在Visual Studio中编辑时失去了intellisense。关键字和助手属性,如@model、@Url、@Html等,无法识别,并且在VS中产生错误。运行时,应用程序本身工作正常

我已经尝试了各种在线来源的建议解决方案,包括SO,其中大部分涉及对web.config的调整。我已经看过了,我非常确定我的配置设置对于MVC 4是正确的:

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

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

<system.web>
    <httpHandlers>
        <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>    
    <pages
    validateRequest="false"
    pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <controls>
            <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
        </controls>
    </pages>    
</system.web>

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />

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

现在,我已经做了一些观察,这些观察给了我一个问题可能是什么的线索。如果我浏览我的web.config并将引用恢复到MVC 3,即MVC从4.0版恢复到3.0版,Razor/WebPages从2.0版恢复到1.0版,我的view intellisense就会恢复(但显然这会使我的应用程序无法正常运行)

我想我可能有安装问题,Visual Studio出于任何原因都无法找到web.config中指定的程序集,以实现智能感知。我通过NuGet安装了ASP.NET MVC 4引用,并仔细检查了所有引用的程序集的版本是否正确。我尝试过重新安装MVC包,并尝试过多次清理和重建


提前感谢您对我如何使此工作正常进行的任何建议。目前这确实妨碍了我的工作效率。

我认为您需要System.Web.Helpers命名空间,可能还需要System.Web.webpage:

更改此项:

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

致:


对我有效的解决方案(摘自发布说明):

  • 在解决方案资源管理器中,右键单击项目名称,然后选择“卸载项目”。然后再次右键单击该名称并选择Edit ProjectName.csproj
  • 找到ProjectTypeGuids元素并将{E53F8FEA-EAE0-44A6-8774-FFD645390401}替换为{E3E379DF-F4C6-4180-9B81-6769533ABE47}

@我也遇到了类似的问题,重新安装MVC框架在我的案例中起到了作用,你试过官方发行说明中的所有内容了吗@deerchao-感谢链接-是更改了.csproj文件中的GUID解决了此问题。很高兴它有所帮助。你是否有可能住在中国北京,正在寻找一份新工作?如果你感兴趣的话,我想你可以根据stackoverflow的个人资料来选择一个。我在英国,恐怕离北京很远!不幸的是,这并没有解决它。
<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>