F#控制台应用程序无法工作。C#控制台应用程序可以。

3
我将尝试将一个简单的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();
        }
    }
}

3
从现有的控制台窗口运行它并阅读错误信息。 - SLaks
@SLaks。好主意,我没想到。我会试一下。 - Brad
2
您的代码需要在目标计算机上存在 FSharp.Core 库。它们存在吗? - Gene Belitski
2个回答

8

你的 C# 代码片段在 F# 中的对应版本不是你的 F# 代码,而是以下代码:

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

虽然上面的两行代码可以运行,类似于你C#片段中的一个,但在F#代码中使用printfn函数需要在目标计算机上部署某些特定的F#核心组件,而这可能不是情况。后者解释了观察到的行为。


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


1
该页面上没有 F# redist 的链接。直接链接在这里 - ildjarn
5
如果你不想让每个人都安装 F# 运行时,只需将 FSharp.Core 引用设置为“复制本地: true”,它就会出现在你的可执行文件旁边的输出目录中。只需一起复制这两个文件即可。 - Joel Mueller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接