2012-10-04 76 views
6

我已將SS.Razor安裝到我的測試項目中。如果我只是更改default.htm - > cshtml,它可以工作,但不支持vs intellisense語法。所以剃刀代碼是純文本黑白。ServiceStack在沒有MVC的情況下啓用Razor智能感知支持

我想知道如何打開Razor而無需將項目作爲.net MVC項目打開。謝謝!編號------------------------------------------

這裏是我的web.config

(注意添加擴展= 「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=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> 
    <appSettings> 
    <add key="webPages:Enabled" value="false" /> 
    </appSettings> 
    <connectionStrings /> 
    <!-- 
    For a description of web.config changes for .NET 4.5 see http://go.microsoft.com/fwlink/?LinkId=235367. 

    The following attributes can be set on the <httpRuntime> tag. 
     <system.Web> 
     <httpRuntime targetFramework="4.5" /> 
     </system.Web> 
    --> 
    <system.web> 
    <compilation debug="true" targetFramework="4.5"> 
     <assemblies> 
     <add assembly="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
     <buildProviders> 
     <add extension=".cshtml" type="ServiceStack.Razor.CSharpRazorBuildProvider, ServiceStack.Razor" /> 
     </buildProviders> 
    </compilation> 
    <!-- 
      The <authentication> section enables configuration 
      of the security authentication mode used by 
      ASP.NET to identify an incoming user. 
     --> 
    <authentication mode="Windows" /> 
    <!-- 
      The <customErrors> section enables configuration 
      of what to do if/when an unhandled error occurs 
      during the execution of a request. Specifically, 
      it enables developers to configure html error pages 
      to be displayed in place of a error stack trace. 

     <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 
      <error statusCode="403" redirect="NoAccess.htm" /> 
      <error statusCode="404" redirect="FileNotFound.htm" /> 
     </customErrors> 
     --> 
    <httpHandlers> 
     <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" /> 
    </httpHandlers> 
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" /> 
    </system.web> 
    <!-- 
     The system.webServer section is required for running ASP.NET AJAX under Internet 
     Information Services 7.0. It is not necessary for previous version of IIS. 
    --> 
    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <handlers> 
     <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" /> 
    </handlers> 
    </system.webServer> 
    <system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="ServiceStack.Razor.ViewPage"> 
     <namespaces> 
     <add namespace="ServiceStack.Html" /> 
     <add namespace="ServiceStack.Razor" /> 
     <add namespace="ServiceStack.Text" /> 
     <add namespace="ServiceStack.OrmLite" /> 
     <add namespace="Backbone.Todos" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 
</configuration> 

回答

5

爲了讓智能影音感VS.NET你的ASP .NET Web應用程序需要註冊必要的構建提供程序,這些提供程序告訴VS.NET編譯器的剃鬚刀視圖,要包含的基類以及要添加的命名空間。您可以在Razor Rockstars example project中找到必要的Web.Config示例。

注意:當您創建自託管的控制檯應用程序時,還需要存儲在Web.config中的App.Config的副本(這是VS.NET在設計時所看到的)。 Web.config不需要或超出開發/設計時間使用。

當您安裝ServiceStack.Razor NuGet包時,必須已經自動包含必要的web.config信息。因此,如果您刪除了應用於Web.config的web.config transform,則需要將其添加回去。如果你想手動複製web.config.transform文件,你需要手動修改$rootnamespace$佔位符項目的命名空間,如改變:

<add namespace="$rootnamespace$" /> 

<add namespace="Amce.MyWebProject" /> 

嗯,它看起來像有可能是VS 2012智能感覺的一個突出問題,您需要恢復使用VS2010,直到我們找出VS.NET團隊與Razor的構建提供者之間的變化。

+0

我在關閉文本編輯器選項卡並再次打開cshtml文件後發現它有效。但即使您打開標籤並關閉VS並重新啓動它也不起作用。只有在關閉該選項卡時才起作用... vs2010和vs2012相同。 – Tom

3

確保您在web.config中定義了正確的<buildProviders>,如果在VS中打開.cshtml文件時看到以下警告。

ASP.NET runtime error: Could not load file or assembly 'ServiceStack.Razor' or one of its dependencies. The system cannot find the file specified.

您需要將ServiceStack。* .dll和System.Web.Razor.dll複製到/ bin目錄中。這就對了,不是/ bin/debug或/ bin/release目錄。這將爲您提供完整的Intellisense支持,即使在自己託管的項目中(無需創建Web項目)。

相關問題