简体   繁体   中英

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

How to do it? Is it possible to call a function from one F# code into C# without using a separated dll file or project?

You can't include two different languages in the same project, but you can merge them using ilmerge . To do this, put both projects in the same solution and reference the F# module as you would any dll. As part of your deployment script, run ilmerge to combine the exe file and dll file into a single exe file. See this Code Project article that details how to use ilmerge to create an exe.

Not being able to mix C# and F# in the same project creates a problem; It leads to circular dependencies between the two projects. Conceptually there is only one project containing two languages, but because of the way visual studio manages projects languages cannot be mixed, leading to circular dependencies.

For now the only solution I see it to create a lot of interfaces in a third project and have one of the project refer to the interfaces project, instead of the real project. Is there a better way?

Kind Regards, Nick

不。如果您想生成单个.exe,您可以使用一些f#静态链接选项,使用F#--full-help comandline切换这些更多细节。

You can't compile F# source files (.fs) in a C# project, but you can add F# script files (.fsx) which you can use to reference and explore the C# project's assembly from F# interactive:

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# script file (.fsx):

#r "bin\debug\ClassLibrary1.dll"

Math.PowN(2.0,3)

编译你的F#代码,用任何工具(如反射器,ilspy)“反编译”到C#代码,将它包含在项目中 - >利润!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM