目前让 F# 支持 Silverlight 5 的解决方案(包括 lazy 不可用)
2012-02-07 19:24 软件猫 阅读(370) 评论(1) 编辑 收藏 举报
最近想尝试 Silverlight 5 用 F# 编写 Lib 的同学应该发现有很多奇怪的错误。
微软 F# 项目组的同学说其实目前 F# 已经能够很好的支持 SL5,只是这个包他们还没官方正式发布罢了。不过不要紧,有办法~。~
Step1
先下载 InstallFSharp.msi。这是 F# 2.0 包,目前是社区技术预览版,不过不管怎么说我们得先用起来再说。
有了第一步,创建的 SL5 版本的 F# Lib 就能用了。
但是这时会遇到一些奇怪的问题,比如居然不支持 lazy。于是我给 F# 项目组提交了这个 bug。幸运的是第二天就得到答复了,是一个英国的大牛回答了这个问题。
不过,我还是要给出 Step2,毕竟中文版的容易懂些
Step2
下载 F# 源代码,嘿嘿,请注意版权问题
http://fsharppowerpack.codeplex.com/SourceControl/list/changesets
上面的链接点开,屏幕最右边那个 Lastest Version 下面的那个 Download 点开,然后 I Agree,就可以下载了。
下载的文件是一个名为 fsharppowerpack-67146.zip 的压缩包。
解开压缩包,找到 ~\compiler\2.0\Aug2011.1 这个文件夹,把它单独 Copy 出来,随便丢个根目录好了,假设是 d:
打开开始菜单 -> Microsoft Visual Studio 2010 -> Visual Studio Tools -> Visual Studio Command Prompt (2010)
这是打开了一个命令行窗口。然后
cd D:\Aug2011.1\src
msbuild fsharp-proto-build.proj /p:TargetFramework=cli\4.0
msbuild fsharp-library-build.proj /p:TargetFramework=Silverlight\5.0 /p:Configuration=Release
我们把 FSharp.Core.dll 编译成 SL 的版本。
然后在 D:\Aug2011.1\Release\Silverlight\5.0\bin 文件夹中,我们可以找到编译好的内容。
我们需要把除了 FSharp.Core.pdb 以外的四个文件拷贝到 C:\Program Files (x86)\Microsoft F#\Silverlight\Libraries\Client\v5.0
记得拷贝前备份一下。
然后我们在 F# Silverlight Lib 中把原先的 FSharp.Core.dll 删掉,重新添加。注意,版本号是 1.9.9.999,呵呵。