VS2010 F#编译器的正确Web.Config设置是什么?

时间:2013-02-07 04:22:08

标签: visual-studio-2010 f#

我有一个像这样的ASPX页面:

<%@ Page Language="F#" %>
<!DOCTYPE html>
<html>
<head>   
   <title></title>
</head>
<body>
   <%-- Try to output "This is a Test" 10 times --%>
   <% for i = 1 To 10 do  %>
      <p>This is a test</p>   
</body>
</html>

和一个看起来像这样的web.config:

<?xml version="1.0"?>
<configuration>
   <system.codedom>
      <compilers>
         <compiler language="F#;f#;fs;fsharp"
            extension=".fs"
            warningLevel="4"
            type="Microsoft.FSharp.Compiler.CodeDom.FSharpAspNetCodeProvider,
            FSharp.Compiler.CodeDom, Version=2.0.0.0,
            Culture=neutral,
            PublicKeyToken=a19089b1c74d0809">
            <providerOption name="CompilerVersion" value="v4.0" />
            <providerOption name="WarnAsError" value="false" />
         </compiler>
      </compilers>
   </system.codedom> 
   <system.web>
      <compilation debug="true" targetFramework="4.0" />
   </system.web>
</configuration>   

当我运行我的VS2010 WebApp时,我收到如下错误:
“CodeDom提供程序类型”Microsoft.FSharp.Compiler.CodeDom.FSharpAspNetCodeProvider,
            FSharp.Compiler.CodeDom,Version = 2.0.0.0,
            文化=中性,
            PublicKeyToken = a19089b1c74d0809“无法找到。”

我已经尝试了manojlds here提到的设置,但它们似乎也不适合我。我想这是因为我的VS2010 Pro副本有一个较新版本的F#编译器,但我不知道如何确定。

有人可以帮我理解我应该在VS2010 web.config中使用的“编译器”和“providerOption”元素的正确版本设置吗?

1 个答案:

答案 0 :(得分:2)

我没有试过这个,但你的配置文件对我来说是正确的 - 你能看看你的GAC中安装了FSharp.Compiler.CodeDom程序集的外观(通过查看C:\windows\assembly)吗?

但是,目前我不建议使用F#来编写网页的ASPX部分。它可以工作,但是在将C#与ASPX混合或使用Razor模板引擎(用于ASP.NET MVC)时,您将无法获得如此流畅的体验。

我认为在F#中创建服务器端ASP.NET Web应用程序的最佳方法是将F#用于后面的代码(在传统的WebForms中)或模型和控制器部分(在MVC中)。还有许多模板和教程描述了如何执行此操作: