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