Asp.net-Mvc

需要剃刀視圖引擎自動完成才能在類庫中工作?

  • November 11, 2010

我們有一個模組化架構,其中我們在一個單獨的項目(類庫)中有一些視圖(cshtml)文件。我們怎樣才能得到語法高亮和當項目不是 MVC 項目時自動完成工作?

請注意,類庫有控制器、視圖、模型等。它只是沒有普通 mvc 項目應該有的 web.config、global.asax 等。

智能感知適用於除如此重要的模型之外的所有內容: 模型錯誤截圖

使用 MVC3 RTM,如果您將滑鼠懸停在模型上,您現在可以獲得更好的錯誤消息:

C:...\Index.cshtml:ASP.NET 執行時錯誤:沒有為擴展“.cshtml”註冊建構提供程序。您可以在 machine.config 或 web.config 的 <compilation><buildProviders> 部分中註冊一個。確保它具有包含值“Web”或“All”的 BuildProviderAppliesToAttribute 屬性。

所以我添加了這個:

&lt;compilation&gt;
   &lt;assemblies&gt;
     &lt;add assembly="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&gt;
   &lt;/assemblies&gt;
   &lt;buildProviders&gt;
     &lt;add
        extension=".cshtml"
        type="System.Web.WebPages.Razor.RazorBuildProvider, System.Web.WebPages.Razor"/&gt;
   &lt;/buildProviders&gt;
 &lt;/compilation&gt;

然後在添加建構提供程序後,出現此錯誤消息:

C:...\Index.cshtml:ASP.NET 執行時錯誤:無法載入文件或程序集“System.Web.WebPages.Razor”或其依賴項之一。該系統找不到指定的文件。(C:...\machine.config 第 259 行)

這篇文章中的 webconfig將起作用。我在下面複製了它(為了後代):

&lt;?xml version="1.0"?&gt;
&lt;configuration&gt;

   &lt;configSections&gt;
       &lt;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"&gt;
           &lt;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" /&gt;
           &lt;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" /&gt;
       &lt;/sectionGroup&gt;
   &lt;/configSections&gt;

   &lt;system.web.webPages.razor&gt;
       &lt;host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&gt;
       &lt;pages pageBaseType="System.Web.Mvc.WebViewPage"&gt;
           &lt;namespaces&gt;
               &lt;add namespace="System.Web.Mvc" /&gt;
               &lt;add namespace="System.Web.Mvc.Ajax" /&gt;
               &lt;add namespace="System.Web.Mvc.Html" /&gt;
               &lt;add namespace="System.Web.Routing" /&gt;
           &lt;/namespaces&gt;
       &lt;/pages&gt;
   &lt;/system.web.webPages.razor&gt;

   &lt;system.web&gt;
       &lt;compilation targetFramework="4.0"&gt;
           &lt;assemblies&gt;
               &lt;add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/&gt;
               &lt;add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/&gt;
               &lt;add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/&gt;
               &lt;add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /&gt;
           &lt;/assemblies&gt;
       &lt;/compilation&gt;
   &lt;/system.web&gt;

&lt;/configuration&gt;

引用自:https://stackoverflow.com/questions/4158573