Asp.net-Mvc
需要剃刀視圖引擎自動完成才能在類庫中工作?
我們有一個模組化架構,其中我們在一個單獨的項目(類庫)中有一些視圖(cshtml)文件。我們怎樣才能得到
語法高亮和當項目不是 MVC 項目時自動完成工作?請注意,類庫有控制器、視圖、模型等。它只是沒有普通 mvc 項目應該有的 web.config、global.asax 等。
使用 MVC3 RTM,如果您將滑鼠懸停在模型上,您現在可以獲得更好的錯誤消息:
C:...\Index.cshtml:ASP.NET 執行時錯誤:沒有為擴展“.cshtml”註冊建構提供程序。您可以在 machine.config 或 web.config 的 <compilation><buildProviders> 部分中註冊一個。確保它具有包含值“Web”或“All”的 BuildProviderAppliesToAttribute 屬性。
所以我添加了這個:
<compilation> <assemblies> <add assembly="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </assemblies> <buildProviders> <add extension=".cshtml" type="System.Web.WebPages.Razor.RazorBuildProvider, System.Web.WebPages.Razor"/> </buildProviders> </compilation>然後在添加建構提供程序後,出現此錯誤消息:
C:...\Index.cshtml:ASP.NET 執行時錯誤:無法載入文件或程序集“System.Web.WebPages.Razor”或其依賴項之一。該系統找不到指定的文件。(C:...\machine.config 第 259 行)
這篇文章中的 webconfig將起作用。我在下面複製了它(為了後代):
<?xml version="1.0"?> <configuration> <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> <system.web> <compilation targetFramework="4.0"> <assemblies> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </assemblies> </compilation> </system.web> </configuration>
