簡體   English   中英

是否可以在單個Visual Studio Windows控制台項目中混合使用.cs(C#)和.fs(F#)文件? (。凈)

[英]Is it possible to mix .cs (C#) and .fs (F#) files in a single Visual Studio Windows Console Project? (.NET)

怎么做? 是否可以在不使用分離的dll文件或項目的情況下將函數從一個F#代碼調用到C#中?

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

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

現在,我認為唯一的解決方案是在第三個項目中創建大量接口,並讓其中一個項目引用接口項目,而不是真正的項目。 有沒有更好的辦法?

親切的問候,尼克

不。如果您想生成單個.exe,您可以使用一些f#靜態鏈接選項,使用F#--full-help comandline切換這些更多細節。

您無法在C#項目中編譯F#源文件(.fs),但您可以添加F#腳本文件(.fsx),您可以使用它來引用和探索來自F#interactive的C#項目程序集:

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)

編譯你的F#代碼,用任何工具(如反射器,ilspy)“反編譯”到C#代碼,將它包含在項目中 - >利潤!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM