2009-01-21 37 views

回答

21

您不能在同一個項目中包含兩種不同的語言,但可以使用ilmerge合併它們。要做到這一點,將這兩個項目放在同一個解決方案中,並像任何dll一樣引用F#模塊。作爲部署腳本的一部分,運行ilmerge將exe文件和dll文件合併爲一個exe文件。看到這篇文章詳細介紹瞭如何使用ilmerge創建一個exe文件。

+2

F#的靜態鏈接切換器與ilmerge相同。 – Robert 2009-01-22 08:55:14

12

不可以。如果您想生成一個.exe文件,您可以使用f#靜態鏈接選項的某些部分,使用F# - 全部幫助命令行開關來詳細介紹這些選項。

15

不能在同一個項目中混合使用C#和F#會產生問題;它導致兩個項目之間的循環依賴關係。從概念上講,只有一個項目包含兩種語言,但由於Visual Studio管理項目的方式不能混合使用,導致循環依賴。

現在唯一的解決方案,我看到它在第三個項目中創建了很多接口,並且其中一個項目引用接口項目,而不是真正的項目。 有沒有更好的方法?

親切的問候, 尼克

+6

優秀評論和問題,但除非您將其作爲問題發佈,否則您不會受到太多關注。 – 2011-01-01 18:18:27

6

不能在C#項目編譯F#源文件(.FS),但您可以添加F#腳本文件(.fsx),你可以用它來參考和探索C#項目從F#交互式安裝:

public static class Math 
{ 
    public static double PowN(double d, int n) 
    { 
     var result = 1; 
     for (int i = 0; i < n; i++) result *= d; 
     return result; 
    } 
} 

F#腳本文件(.fsx):

#r "bin\debug\ClassLibrary1.dll" 

Math.PowN(2.0,3) 
0

編譯您的F#代碼, 「反編譯」 用任何工具(如反射,我lspy)轉換爲C#代碼,將其包含在一個項目中 - > Profit!

相關問題