我有一个像这样的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”元素的正确版本设置吗?
答案 0 :(得分:2)
我没有试过这个,但你的配置文件对我来说是正确的 - 你能看看你的GAC中安装了FSharp.Compiler.CodeDom
程序集的外观(通过查看C:\windows\assembly
)吗?
但是,目前我不建议使用F#来编写网页的ASPX部分。它可以工作,但是在将C#与ASPX混合或使用Razor模板引擎(用于ASP.NET MVC)时,您将无法获得如此流畅的体验。
我认为在F#中创建服务器端ASP.NET Web应用程序的最佳方法是将F#用于后面的代码(在传统的WebForms中)或模型和控制器部分(在MVC中)。还有许多模板和教程描述了如何执行此操作: