【问题标题】:Visual Studio 2015 MVC razor HTMLHelper intellisense doesn't work for upgraded projectVisual Studio 2015 MVC razor HTMLHelper intellisense 不适用于升级的项目
【发布时间】:2017-03-11 15:00:59
【问题描述】:

我已经使用 Visual Studio 2015 一年多了,没有任何问题。最初在 VS 2010 上开发并升级到 VS 2015 的 MVC.net 项目之一在所有 HTML 帮助程序上都有红色错误行。一切仍然可以编译并运行良好,只有有限的智能感知和打开视图时显示的大量错误。

我注意到的一件事是 HTML 助手使用的命名空间与我的其他工作项目不同。

例如,如果我将鼠标悬停在 Html.BeginForm 上,命名空间将显示 WebPage.HTML。在一个工作项目中 Html.BeginForm 显示 WebViewPage。

我已经花了几个小时查看旧帖子中的所有建议,但没有任何效果。

Razor Views not seeing System.Web.Mvc.HtmlHelper

Why don't my Html Helpers have intellisense?

因为一切都可以编译并且实际上可以工作,我相信这个问题与 VS 工具或 /views/web.config 有关。我已经验证了 .proj 文件中的工具设置为 14,并且 view/web.config 中的所有引用都正确,但没有任何效果。当然,我已经多次清理并重建了解决方案。我还从 nuget 完全安装了 mvc.net 并重新安装了几次。

这个项目中唯一奇怪的限制是我无法将它升级到 mvc 4,因为项目中还有几个其他依赖项与 .net 4 相关联。

这是我的 view/web.config 的相关部分

<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.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=3.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.Routing" />
  </namespaces>
</pages>
</system.web.webPages.razor>

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

这是我的 web.config 中的相关部分

 <appSettings>
<add key="webpages:Version" value="1.0.0.0"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
 </appSettings>
  <system.web>
<httpRuntime maxRequestLength="1048576" executionTimeout="1500"/>
<customErrors mode="RemoteOnly"></customErrors>
<compilation debug="true" targetFramework="4.0">

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

我从这里去哪里?

【问题讨论】:

    标签: asp.net-mvc razor intellisense


    【解决方案1】:

    我终于想通了,我想我会发布这个,以防其他人遇到这个噩梦。

    这是一个非常古老的项目,已经通过多个版本的 Visual Studio 和 .net 进行了升级。它有一个带有非常旧的 MVC dll 的 _bin_deployableAssemblies。这是一个 VS 2010 的构造。即使我通过 Nuget 成功升级了 MVC,这些旧的 dll 也被用作 dll 引用。

    为了解决这个问题,我卸载了项目并从项目中手动删除了包含 _bin_deployableAssemblies 文件夹的行。之后,我的参考资料显示了我从 Nuget 多次安装的 MVC 版本的正确版本号。

    剩下要做的就是检查 web.config 文件并手动将所有引用的 dll 的版本更改为正确的较新版本。

    经过清理和重建后,一切都恢复正常。

    【讨论】:

    • 嘿蒂姆,我没有意识到我可以接受我自己的答案:)。我刚试过,它说我需要等待 2 天才能接受。我会尽量记住几天后回来做。
    猜你喜欢
    • 2015-10-13
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2023-04-06
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多