当我尝试在 Windows 上 运行 FAKE 的 build.cmd 时,类型 'CLIMutable' 未定义

The type 'CLIMutable' is not defined when I attempt to run FAKE's build.cmd on Windows

我分叉并克隆了 FAKE - F# Make Github Repo so that I could potentially contribute back to it. I followed the contributing instructions here。然而,我几乎立即遇到了障碍。当我 运行 build.cmd 我收到以下错误。

1) Building ./FAKE.Deploy.Web.sln failed with exitcode 1.
2) FS0039: C:\Development\FAKE\src\deploy.web\Fake.Deploy.Web.Abstractions\AccountModels.fs(9,3): The type 'CLIMutable' is not defined
3) FS0039: C:\Development\FAKE\src\deploy.web\Fake.Deploy.Web.Abstractions\AccountModels.fs(17,3): The type 'CLIMutable' is not defined
4) FS0039: C:\Development\FAKE\src\deploy.web\Fake.Deploy.Web.Abstractions\AccountModels.fs(30,3): The type 'CLIMutable' is not defined
5) FS0039: C:\Development\FAKE\src\deploy.web\Fake.Deploy.Web.Abstractions\AccountModels.fs(37,3): The type 'CLIMutable' is not defined
6) FS0039: C:\Development\FAKE\src\deploy.web\Fake.Deploy.Web.Abstractions\Model.fs(9,3): The type 'CLIMutable' is not defined
7) FS0039: C:\Development\FAKE\src\deploy.web\Fake.Deploy.Web.Abstractions\Model.fs(16,3): The type 'CLIMutable' is not defined
8) FS0039: C:\Development\FAKE\src\deploy.web\Fake.Deploy.Web.Abstractions\Model.fs(36,3): The type 'CLIMutable' is not defined
9) FS0039: C:\Development\FAKE\src\deploy.web\Fake.Deploy.Web.Abstractions\Model.fs(64,3): The type 'CLIMutable' is not defined
10) FS0039: C:\Development\FAKE\src\deploy.web\Fake.Deploy.Web.Abstractions\Model.fs(70,3): The type 'CLIMutable' is not defined

我有 Visual Studio 2012,它带有 F# 3.0。我确认 F# SDK 是由 运行ning System.AppDomain.CurrentDomain.BaseDirectory 在 F# interactive window 中安装的。结果是 C:\Program Files (x86)\Microsoft SDKs\F#.0\Framework\v4.0\.

据我所知,F# 3.0 引入了 CLIMutable 属性。在克隆它和 运行 构建之间我没有对源代码进行任何修改。

我打开了 FAKE.Web.Deploy 解决方案并检查了引用的位置。 FSharp.Core.dll 似乎是针对我没有的 F# 4.3.1 构建的。我怀疑这可能是问题的一部分。此版本似乎与 Visual Studio 2013 一起提供。我可以下载 Visual Studio 2013 Community Edition 但是是否可以获得 Visual Studio 2012 的最新版本的 F#?

这就是问题所在吗? 还有什么问题?

经进一步检查,问题似乎是存储库中的几个 F# 项目没有必要的库引用。具体来说,从提交 8df8a2f 开始,缺少以下内容。

  • 来自Fake.Deploy.Web.fsproj
    • FSharp.Core.dll
  • 来自Fake.Deploy.Web.Abstractions
    • FSharp.Core.dll
  • 来自Fake.Deploy.Web.RavenDb.fsproj
    • FSharp.Core.dll
    • FSharp.Data.TypeProviders

NuGet 已经取消了 FSharp.Core.dll 所以我只需要添加对受影响项目的引用。 FSharp.Data.TypeProviders.dll 尚未下载,但我也能够使用 NuGet 快速修复该问题。