如何从另一个F#程序编译F#库

时间:2010-12-21 07:03:46

标签: f#

我想将我的应用程序配置作为F#文件,将编译为dll。 (比如在haskell上使用xmonad.hs进行XMonad配置)。我发现它更有趣,而且更好的方式是使用XML序列化。

那么有什么办法可以用一些像

这样的配置将单个文件(或更多)编译成库
module RNExcel.Repository

open RNExcel.Model

    type ExpenseReportRepository() =
        member x.GetAll() =
            seq{ yield {Name="User1" 
                        Role="someRole" 
                        Password = "123321"
                        ExpenseLineItems = 
                            [{ExpenseType="Item1" 
                              ExpenseAmount="50"};
                             {ExpenseType="Item2" 
                              ExpenseAmount="50"}]}
                 yield {Name="User2"
                        Role="Estimator" 
                        Password = "123123"
                        ExpenseLineItems = 
                            [{ExpenseType="Item1" 
                              ExpenseAmount="50"};
                             {ExpenseType="Item2" 
                              ExpenseAmount="125"}]}    }

我的想法是运行shell ....并建造项目,但我不认为它适用于每个使用.net 4的用户

2 个答案:

答案 0 :(得分:1)

查看F# Power Pack,特别是FSharp.CodeDom库。您可以使用此库在运行时编译F#代码,并且只需抛出一点反射,就可以轻松实现代码配置的目标。

答案 1 :(得分:1)

我认为使用PowerPack中的CodeDOM提供程序作为Ben建议是一种方法。我只想添加一些东西(它不适合评论框)。

要使用配置解析和编译F#代码,您只需要编译用户使用F#PowerPack编写的源文件。 PowerPack的编译部分已经完成,工作正常。它调用封面下的F#编译器,并为您提供已编译的程序集。唯一的问题是应用程序的用户需要安装F#编译器(而不仅仅是redist)。

F#CodeDOM提供程序的不完整部分是从CodeDOM树生成F#代码(因为树不是为支持F#而设计的),但在这种情况下不需要。

相关问题