[英]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.