2012-10-04 10 views
6

Ho installato SS.Razor nel mio progetto di test. Se cambio semplicemente default.htm -> cshtml, funziona, ma senza il supporto della sintassi vs intellisense. Quindi il codice del rasoio è in bianco e nero.ServiceStack attiva il supporto intellisense Razor senza MVC

Mi chiedo come attivare Razor senza aprire il progetto come progetto MVC .net. Grazie!

EDIT ------------------------------------------

Ecco il mio web.config

(notare l'estensione add = "cshtml" ... è lì ...)

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

risposta

5

al fine di ottenere intelli-senso in VS.NET ASP L'applicazione Web .NET deve disporre dei necessari provider di build registrati che indicano a VS.NET le visualizzazioni del rasoio del compilatore, quale classe di base includere e quali spazi dei nomi si desidera aggiungere. È possibile trovare un esempio del necessario Web.Config nello Razor Rockstars example project.

Nota: quando si crea un'applicazione console di auto-hosting è necessaria anche una copia di App.Config memorizzata in Web.config (che è ciò che VS.NET esamina in fase di progettazione). Il web.config non è necessario o utilizzato oltre lo sviluppo/tempo di progettazione così fa.

Le informazioni necessarie su web.config dovrebbero essere già incluse automaticamente quando si installa il pacchetto ServiceStack.Razor NuGet. Quindi, se hai eliminato lo web.config transform applicato a Web.config, devi aggiungerlo nuovamente. Se si desidera copiare il file manualmente web.config.transform è necessario modificare manualmente il $rootnamespace$ segnaposto con lo spazio dei nomi del progetto, ad esempio, il cambiamento:

<add namespace="$rootnamespace$" /> 

a

<add namespace="Amce.MyWebProject" /> 

Hmmm, Sembra che ci potrebbe essere un problema in sospeso con intelli-sense su VS 2012, sarà necessario tornare a utilizzare VS2010 fino a quando non scopriremo cosa è cambiato il team di VS.NET con i provider di build di Razor.

+0

Ho scoperto dopo aver chiuso la scheda dell'editor di testo e di nuovo aprire il file cshtml, funziona. Ma non funziona anche se si lascia la scheda aperta e si spegne VS e si riavvia. SOLO funziona se chiudi quella scheda ... Lo stesso per vs2010 e vs2012. – Tom

3

Oltre a garantire di avere il corretto <buildProviders> definito in web.config, se viene visualizzato il seguente avviso quando si aprono i file .cshtml in VS.

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

è necessario copiare ServiceStack. *. Dll e System.Web.Razor.dll nella directory/bin. Giusto, NON le directory/bin/debug o/bin/release. Questo ti darà pieno supporto Intellisense anche in un progetto auto-ospitato (senza la necessità di creare un progetto web).

Problemi correlati