在 Build 2011 主题演讲和演示中,他们总是在谈论 C++、C#、Visual Basic 和 JavaScript。我不能用 F# 构建 Metro 风格的应用程序吗?或者可以肯定地说,如果它适用于 C#,那么它也适用于 F#?
6 回答
还是有资格说它是否适用于 C# 那么它也适用于 F#?
是的,这就是它应该如何工作的方式。除了 javascript 和 C/C++,在 CLR 之上运行的任何符合 CLS 的语言都可以访问 WinRT API。
不幸的是,在 VS 2011 Express 版本中,您没有获得工具支持,但我想这将逐步添加或添加到其他版本:
唐在 7 点 40 分左右谈到了这一点。
我有同样的问题,并创建了一篇博文:在 F# 中创建 Metro App (NOT)
有几个问题:
- 您不能引用普通的 .NET dll(即使在 C# 中)。必须使用对 WinRT 的“参考”重新编译它们。因此,您无法引用 F# dll。我认为这将在 F# 3.0 发布后得到解决(来源:Understanding F# slide from Don Syme at build)。
- F# 创建 Metro 应用程序的能力。这必须由 F# 团队构建。这是一个悬而未决的问题。这是全 F# 方法(在 WPF 中现在可以使用但不推荐)。
- 用于创建 Metro 前端项目的工具支持。F# 3.0 版本不会出现这种情况。(来源:了解 Don Syme 在构建时的 F# 幻灯片)。
使用 Visual Studio 11 开发人员预览版(完整版,非 Express),我能够从 C# Metro 风格的应用程序中引用和运行 F# 代码,但需要注意以下几点:
您将收到一条生成警告,指出无法引用该项目,即使 Visual Studio 仍允许您添加它。
您必须删除对 F# 项目中所有 DLL 的所有引用,包括 FSharp.Core。
通过执行这些步骤,可以从 C# Metro 风格的应用程序运行 F# 代码,但是如果不引用核心语言库,几乎不可能在 F# 中编写任何有用的代码。让我们希望他们尽快更新库以兼容 WinRT。
问题已在此处得到解答: Windows 8 和 F# 尽管您不能直接在 F# 中创建和设计 Metro 应用程序,但您仍然可以在 F# 中创建带有所有模型和 ViewModel 的所谓可移植库,并将其用于其他 Metro 项目。这并不理想,但它有效。
我将 .NET3.5-4.0 的股票图表库移植到便携式库,它在带有 C# Metro 应用程序和一些 Metro UI 桥的 Metro 上运行良好。我确信我可以使用 F# 在很多方面制作 Metro 应用程序。