我想将我的应用程序配置作为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的用户
答案 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#而设计的),但在这种情况下不需要。