2012-07-21 55 views
12

我需要从一个Windows服务发送电子邮件和跨ActionMailer.net来了,可以在ASP中使用或者是模板化的电子邮件系统没有登记生成提供。网络MVC应用程序或独立。ActionMailer.Net独立:没有为扩展名“.cshtml”

继单机教程

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

我在点我在那里我创建一个视图。但是,当我在视图中输入任何文本时,它会用蓝色的波浪线标出。将鼠标悬停在蓝色波浪线显示在工具提示中的错误消息:

没有为扩展名“.cshtml”你可以在machine.config中或web.config中

<compilation><buildProviders>部分注册一个没有注册生成提供

看来我缺少一个步骤设置剃刀的支持。

我错过了什么?

回答

16

这只是一个警告。运行它时,您的项目将会编译并工作得很好。现在为了在ASP.NET MVC应用程序之外获得对Razor模板的工具支持,您可以查看following blog post

所以,骗取Visual Studio的(愚蠢)智能感知只需在Windows服务项目的根目录具有以下内容拖放一个web.config(是的web.config):

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

在运行时这绝对是不必要的,当然也没有效果(你的应用程序之前也是如此)。这只是诱使VS认为这是一个Web应用程序,并为您提供Intellisense。

+0

我添加了一个新的web.config文件,你用上面的内容,我的类库项目建议,但是我仍然没有感觉到智能。不过,你是对的,否则一切正常。将再次以清新的眼光再次审视...... – 2012-07-21 07:36:41

+0

您可能需要关闭并重新打开剃刀视图。也许甚至重新启动VS或其他。对我来说,它只是关闭并打开VS中的.cshtml文件,但谁知道呢。 – 2012-07-21 07:43:51

+0

关闭并重新打开VS没有工作,要么:-( – 2012-07-21 16:35:15

13

在根web.config文件中添加以下代码块下的System.Web部分:

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