1

我有模块化的 MVC Portal-Plugin 应用程序。当我更改 mvc 应用程序的输出路径时,Razor highlight 和 intellisense 停止在 cshtml 文件中工作。以前有人可以遇到这个问题吗?我还添加了构建后事件以将视图复制到自定义目录中

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

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

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

Output Path :   ..\Container\bin\

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

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

4

5 回答 5

5

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

我刚刚放置了默认输出路径“bin\”并添加了构建后事件以将我的 dll 从这个文件夹复制到另一个文件夹中。

于 2013-08-28T20:36:34.447 回答
3

Solved it and blogged about it in here...

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

*Right Click – >Manage Nuget Packages

*Click on the installed Packages.

*Click Uninstall.

*When your done search for MVC 5 online and install the Library.

*Right click on your project and go to properties

*Select Build

*On Configuration select all configuration.

*Go to the output path and type “bin\”</p>

*Clean your project and rebuild.

*Make sure that your cshtml file is closed.

*Reopen your view file and BOOOOOOM it works.

于 2013-12-24T19:24:32.890 回答
1

确保您的 web.config 文件Visual studio project包含以下行:

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

这些线给你智能感觉。

于 2013-08-28T19:14:12.863 回答
0

将输出路径更改为 bin/ 是正确的答案,但我对其进行了一些扩展。所有创建具有智能感知支持的“vanilla”类库所需的步骤如下

创建或打开一个现有的类库项目(如果你打开一个现有的,请务必删除 MVC5 nuget 包)

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

关闭所有打开的 .cshtml 文件

右键项目 -> 属性 -> 构建 -> 将输出路径更改为“bin/”</p>

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

清理并构建解决方案。

打开.cshtml文件

网络配置:

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

于 2014-01-06T03:09:15.863 回答
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 版本来确定要加载的设计时 razor 引擎 dll。

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

于 2017-06-21T00:42:07.187 回答