当前位置:  开发笔记 > 编程语言 > 正文

是否可以在单个Visual Studio Windows控制台项目中混合使用.cs(C#)和.fs(F#)文件?(.净)

如何解决《是否可以在单个VisualStudioWindows控制台项目中混合使用.cs(C#)和.fs(F#)文件?(.净)》经验,为你挑选了4个好方法。

怎么做?是否可以在不使用分离的dll文件或项目的情况下将函数从一个F#代码调用到C#中?



1> Michael Mead..:

您不能在同一个项目中包含两种不同的语言,但可以使用ilmerge合并它们 .为此,将两个项目放在同一个解决方案中,并像引用任何dll一样引用F#模块.作为部署脚本的一部分,运行ilmerge将exe文件和dll文件合并到一个exe文件中.请参阅此Code Project文章,其中详细介绍了如何使用ilmerge创建exe.


F#的静态链接开关和ilmerge一样.

2> 小智..:

无法在同一个项目中混合C#和F#会产生问题; 它导致两个项目之间的循环依赖.从概念上讲,只有一个项目包含两种语言,但由于visual studio管理项目的方式不能混合语言,导致循环依赖.

现在,我认为唯一的解决方案是在第三个项目中创建大量接口,并让其中一个项目引用接口项目,而不是真正的项目.有没有更好的办法?

亲切的问候,尼克


优秀的评论和问题,但除非您将其作为问题发布,否则您不会受到太多关注.
+1我已经看到几个商业项目使用ILMerge将C#和F#引入同一个程序集.Microsoft应该正确支持ILMerge并将其嵌入到Visual Studio中,而不是让一名员工推出alpha版本软件.

3> Robert..:

不.如果你想生产单个.exe,你可以使用一些f#静态链接选项使用F#--full-help comandline开关来了解更多细节.



4> Phillip Trel..:

您无法在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)

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有