代码改变世界

目前让 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。幸运的是第二天就得到答复了,是一个英国的大牛回答了这个问题。

http://social.msdn.microsoft.com/Forums/en-US/fsharpgeneral/thread/b3ebf04e-ffe9-4897-a606-0ef1753539ab

不过,我还是要给出 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,呵呵。