2012-05-04 53 views
3

我正在尝试将一个简单的f#控制台应用程序部署到同事计算机,但它保持失败。双击应用程序图标后,会出现控制台窗口,但随后Microsoft错误报告窗口会显示询问是否要发送错误报告,然后拒绝控制台窗口中的某些文本闪烁。它看起来像一个错误消息,但窗口关闭太快而无法告诉。奇怪的是,如果我创建一个类似的C#应用​​程序,它的工作原理。我在发布模式下将.NET 4客户端框架作为目标。f#控制台应用程序不起作用。 c#的控制台应用程序确实

下面是代码

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(); 
     } 
    } 
} 
+3

运行它,并读取错误。 – SLaks

+0

@SLaks。好的电话,我没想到。我会试试看。 – Brad

+2

您的代码需要目标计算机上存在FSharp.Core库。他们在场吗? –

回答

5

看看你的F#项目的引用,你会看到一个FSharp.Core它通常设在这里:

C:\ Program Files文件(x86)的\参考大会\微软\ FSharp \ 2.0 \运行\ 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

+1

没有链接到该页面的F#重印符号。直接链接是[此处](http://go.microsoft.com/fwlink/?LinkID=186910)。 – ildjarn

+5

如果您不想让每个人都安装F#运行时,只需将FSharp.Core引用设置为'Copy Local:true',它就会显示在您的可执行文件旁边的输出目录中。只需复制两个文件。 –

8

你的C#代码段的F#模拟会不是您的F#代码,但以下内容:

System.Console.WriteLine "print test" 
System.Console.ReadLine() |> ignore 

尽管应用关闭了上面的两行代码,但类似于关闭C#代码段的应用程序,仅使用原始.NET,在F#代码中使用printfn函数需要在目标计算机上部署某些特定于F#的核心组件,可能并非如此。后者解释了观察到的行为。