剃刀突出显示停止工作

时间:2013-08-28 18:58:10

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

我有模块化的MVC Portal-Plugin应用程序。当我改变了mvc应用程序的输出路径Razor高亮和智能感知停止在cshtml文件中工作。以前有人可以面对这个问题吗?我还添加了post build事件来将Views复制到自定义目录

我有主要的“容器”MVC应用程序和模块(mvc项目)

主要的mvc应用程序和模块位于一个解决方案中

每个模块MVC应用程序都有下一个选项:

Output Path :   ..\Container\bin\

Post build Event:   xcopy "$(ProjectDir)\Views" "..\Modules\$(ProjectName)\Views" /s /i /y

经过这次操作后,我的Razor智能感知和突出显示停止在模块应用程序中工作。

5 个答案:

答案 0 :(得分:4)

我解决了我的问题。这是输出路径的问题。

我只是将默认输出路径“bin”添加并添加post build事件以将我的dll从此文件夹复制到另一个文件夹中。

答案 1 :(得分:3)

解决了它并在这里写了博客......

http://mhammadchehab.com/wordpress/2013/12/enabling-intellisense-for-razor-in-class-library-mvc-5-razor-3-0/

*右键单击 - >管理Nuget包

*单击已安装的包。

*点击卸载。

*完成在线搜索MVC 5并安装库。

*右键单击您的项目并转到属性

*选择Build

*在配置上选择所有配置。

*转到输出路径并输入“bin \”

*清理项目并重建。

*确保您的cshtml文件已关闭。

*重新打开您的视图文件,它可以使用BOOOOOOM。

答案 2 :(得分:1)

确保Visual studio project中的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>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="MyCustomHelpers" />
    </namespaces>
  </pages>
</system.web.webPages.razor>\

这些线条为您提供智能感。

答案 3 :(得分:0)

将输出路径更改为bin /是正确的答案,但我稍微扩展了一下。所有创建具有intellisense支持的“vanilla”类库所需的步骤如下

创建或打开现有的类库项目(如果打开现有项目,请确保删除MVC5 nuget包)

添加MVC(5.0)nuget包(在解决方案资源管理器中右键单击项目 - &gt;管理NuGet包 - &gt;搜索MVC并安装“Microsoft ASP.NET MVC”)

关闭所有打开的.cshtml文件

右键点击项目 - &gt;属性 - &gt;构建 - &gt;将输出路径更改为“bin /”

将以下最小的Web.config添加到类库项目的根目录(Web intellisense只需要配置文件。配置(通过Web.config)应该在托管ClassLibrary程序集的WebApplication中完成)

清理并构建解决方案。

打开cshtml文件

的web.config:

<?xml version="1.0" encoding="utf-8"?>
<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>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
  </system.web> 

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.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" />
        <!-- add other namespaces for views here -->
        <!-- e.g. your own project's, Lib.Views.Etc -->
      </namespaces>
    </pages>
  </system.web.webPages.razor>
</configuration>

我也刚刚在博客上发表了这篇http://thetoeb.wordpress.com/2014/01/05/enabling-mvc5-intellisense-in-a-classlibrary-project/

答案 4 :(得分:0)

我解决了如下问题。在web.Config中,添加:

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

作为参考,webpages:Version执行此操作:

  

如果web.config文件中缺少密钥,例如默认的Razor V2 / V3   网站,VS将使用bin目录的razor dll版本来确定   设计时间剃刀引擎dll加载。

https://stackoverflow.com/a/27918972/3146