我正在尝试将一个简单的f#控制台应用程序部署到同事计算机,但它仍然失败。双击应用程序图标后,将出现控制台窗口,但随后出现Microsoft错误报告窗口,询问我是否要发送错误报告,然后拒绝控制台窗口中的某些文本闪烁。它看起来像一个错误消息,但窗口关闭太快而无法分辨。奇怪的是,如果我创建一个类似的C#应用程序,它的工作原理。我在发布模式下将.net 4客户端框架作为目标。
这是代码
f#代码(不起作用):
open System
printfn "print test"
Console.ReadLine() |> ignore
c#代码(确实有效):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestCApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Testing...");
Console.ReadLine();
}
}
}
答案 0 :(得分:8)
您的C#代码段的F#模拟不是您的F#代码,而是以下内容:
System.Console.WriteLine "print test"
System.Console.ReadLine() |> ignore
虽然上面的2-liner应用程序将运行,类似于C#代码段中的一个,只是在原始.NET上,在F#代码中使用printfn
函数需要部署特定的F#特定核心组件目标计算机,可能不是这种情况。后者解释了观察到的行为。
答案 1 :(得分:5)
查看您的F#项目的引用,您将看到一个FSharp.Core,它通常位于此处:
C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ FSharp \ 2.0 \ Runtime \ v4.0 \ FSharp.Core.dll
在Windows 7(64位)PC上
另请查看F#站点以获取运行时下载。
http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/release.aspx
编辑:这是运行时下载的直接链接(感谢ildjarn):
http://www.microsoft.com/en-us/download/details.aspx?id=13450