2011-09-17 83 views
16

在Build 2011的基调和演示中,他们一直在讨论C++,C#,Visual Basic和JavaScript。我无法使用F#构建Metro风格的应用程序吗?或者可以肯定地说,如果它与C#一起工作,那么它也可以与F#一起工作?F#风格的Metro风格应用程序?

回答

12

还是有资格说如果它可以与C#一起使用,那么它也可以与F#一起使用?

是的,这就是它应该如何工作。除了JavaScript和C/C++之外,在CLR之上运行的任何CLS兼容语言都可以访问WinRT API。

在VS 2011 Express版本,你没有得到的工具支持,但我想这

不幸将逐步增加,或者其他版本:

enter image description here

+18

这不是那么容易。当然,运行时投影对编译为IL的任何东西都是完全透明的,但大多数编译器在编译时也需要从程序集中加载类型信息(用于类型检查)。这意味着能够读取和解析.winmd文件,与vanilla CLI程序集相比,它有一些扩展。此外.winmd文件按原样描述WinRT类型,而不应用CLR投影规则 - 例如如果你阅读它们,你会看到一个类型实现'IIterable 'WinRT接口,但是在运行时,CLR会将它映射到'IEnumerable '。因此需要编译器支持。 –

8

我有同样的问题,并创建了一个博客帖子:Create a Metro App in F# (NOT)

有几个问题:

  • 不能引用普通的.NET的DLL(甚至在C#)。他们必须 重新编译与“参考”的WinRT。因为这个 你不能引用F#dll。我认为这将在F# 3.0获得发布时解决(来源:了解Don Syme的F#幻灯片,编号为 )。
  • F#创建Metro应用的能力。这必须是由F#团队构建的 。这是一个悬而未决的问题。这是全F# 方法(在WPF中,今天可能但不推荐)。
  • 创建Metro前端工程的工具支持。对于 F#3.0版本,情况并非如此。 (来源:了解Don Syme的F#幻灯片,编号为 )。
6

使用Visual Studio 11开发者预览版(完全,不表达),我是能够从C#Metro风格的应用程序有以下注意事项参考,并运行F#代码:

  • 你会得到一个建立警告称该项目不能被引用,即使Visual Studio仍然允许你添加它。

  • 您必须在F#项目中删除对所有DLL的所有引用,包括FSharp.Core。

通过以下步骤,可以从C#Metro风格应用程序中运行的F#代码,但它几乎是不可能写在F#任何有用的代码不会对核心语言库的引用。让我们希望他们尽快更新库文件以便与WinRT兼容。

1

的问题已经在这里找到答案: Windows 8 and F# 虽然您不能创建和设计地铁应用程序直接在F#中,你仍然可以在F#中创建所谓的便携式库所有型号的ViewModels而在另一个地铁项目中使用它。这不是理想的,但它的工作原理。

1

我将.NET3.5-4.0的股票图表库移植到便携库中,它在Metro上使用C#Metro应用程序和我的一些Metro UI桥很有效。 我确信我可以使用F#在很多地方制作Metro应用程序。