2009-01-21 42 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!

相关问题