2012-05-04 55 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#的核心組件,可能並非如此。後者解釋了觀察到的行爲。