0

我有一个这样的 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,
Culture=neutral,
PublicKeyToken=a19089b1c74d0809”无法定位。”

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

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

4

1 回答 1

2

我还没有尝试过,但是您的配置文件对我来说是正确的 - 您可以检查FSharp.Compiler.CodeDom您的 GAC 中安装的程序集的版本(通过查看C:\windows\assembly)吗?

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

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

于 2013-02-07T11:04:49.207 回答