2012-07-21 4 views
12

Ich muss E-Mails von einem Windows-Dienst senden und stieß auf ActionMailer.net, ein Vorlagen-E-Mail-System, das innerhalb eines ASP verwendet werden kann. Net MVC-Anwendung oder Standalone.ActionMailer.Net Stand-Alone: ​​Es gibt keinen Build-Provider registriert für die Erweiterung '.cshtml'

Im Anschluss an den Stand-alone-Tutorial

http://geeksharp.com/2011/07/06/actionmailer-0-6-released/

ich an dem Punkt bin, wo ich eine Ansicht bin zu schaffen. Wenn ich jedoch Text in die Ansicht eingebe, wird er mit einem blauen Kringel unterstrichen. Maus über den blauen Kringel zeigt eine Fehlermeldung in einer Werkzeugspitze:

Es gibt keine Buildanbieter für die Erweiterung registriert ‚.cshtml‘ Sie können einen im <compilation><buildProviders> Abschnitt von machine.config oder web.config registrieren

Scheint, ich vermisse einen Schritt Razor Unterstützung einrichten.

Was fehlt mir?

Antwort

16

Das ist nur eine Warnung. Ihr Projekt wird kompiliert und funktioniert einwandfrei, wenn Sie es ausführen. Um Tooling-Unterstützung für Ihre Razor-Vorlagen außerhalb einer ASP.NET MVC-Anwendung zu erhalten, können Sie sich jetzt die following blog post ansehen.

So zu betrügen das Visual Studio (dumm) Intellisense fällt einfach ein web.config (yeah web.config) in der Wurzel Ihres Windows-Projektes mit folgendem Inhalt:

<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.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     </assemblies> 
    </compilation> 
    </system.web> 
</configuration> 

Zur Laufzeit Es ist absolut unnötig und hat natürlich keine Wirkung (Ihre Anwendung hat auch vorher funktioniert). Es ist nur VS zu glauben, dass dies eine Webanwendung ist und Sie mit Intellisense versorgen.

+0

ich eine neues web.config hinzugefügt, wie Sie mit dem oben genannten Inhalt meines Klassenbibliotheksprojekt vorschlagen, ich aber Ich bekomme immer noch keine Intellisense. Du hast aber recht, dass sonst alles funktioniert. Werde wieder mit frischen Augen schauen ... –

+0

Sie müssen vielleicht die Razor Ansicht schließen und wieder öffnen. Vielleicht starte VS oder sowas neu. Für mich funktionierte es, indem ich einfach die .cshtml-Datei in VS schloss und öffnete, aber wer weiß. –

+0

Schließen und wieder öffnen VS hat nicht funktioniert, entweder :-( –

13

Fügen Sie den folgenden Code-Block in der Datei root web.config unter system.web Abschnitt:

<compilation debug="true" targetFramework="4.0" > 
    <!-- In order to provide MVC Intellisense support during developement--> 
    <assemblies> 
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    </assemblies> 
</compilation> 
Verwandte Themen