Linux上的WPF(已经)可能吗?

时间:2009-01-07 19:40:44

标签: c# .net wpf mono

我喜欢用.NET编程,特别是C#3.0,.NET 3.5和WPF。但我特别喜欢的是Mono .NET与平台无关。

现在我听说Mono的橄榄计划。我找不到某种Beta。

它已经有效吗?有没有人对此有任何经验?

编辑:我知道月光。但我想要一个独立的WPF应用程序。 因为 Moonlight我希望Linux上的WPF能成为现实。

9 个答案:

答案 0 :(得分:22)

使用Moonlight会有更好的运气,它定位Silverlight API,它是完整WPF的子集。

编辑:当然,Silverlight并非“适用于”桌面,但没有理由不在应用程序中嵌入silverlight引擎。之前已经完成过,例如the Mac NY Times Reader

更多编辑:请参阅Standalone Silverlight Applications

上的Miguel帖子

答案 1 :(得分:12)

更新:由于人们不断提出这个问题,我想指出它已经过时了 long 。 Mono多年前被MS收购,他们对开源的态度发生了变化,所以请考虑这个帖子已经过时了。 (与WPF框架本身一样过时,呵呵)。

Mono在Winforms和WPF等微软API方面处于一种令人不安的位置。 .Net技术的一个子集是ECMA标准,但这些API的免费实现可能在更加不合理的法律基础上。我相信这是Novell和微软之间契约的一个重要因素,这对Novell客户有利。但是,使用不是Novell客户的Mono的人不受保护。出于这个原因,F / OSS社区中的很多人都看到了Mono,尽管它具有技术优势。

出于这个原因,Gtk#将永远是首选,因为它是真正免费的。很多人认为它无论如何都要优于Winforms。就WPF而言,它几乎肯定是Novell的低优先级。他们最终可能会实施它,但我希望Moonlight能够成为您在可预见的未来中最接近的。


自发布此消息以来,Microsoft已将其约定延伸至anybody who implements the ECMA 334 & 335 standards

答案 2 :(得分:7)

来自mono website

  

此时,Mono项目确实如此   没有计划实施Windows   Presentation Foundation API as   该项目的一部分。

Moonlight是silverlight的一个实现,它是基于浏览器的基于WPF子集的闪存技术。

在我看来,不实施WPF的选择是单一最大的错误。因为WPF正在迅速成为新的.net用户界面的默认选择。 See this blog for more

答案 3 :(得分:4)

如果您检查this link的已知错误(还包括在Ubuntu上安装.NET所需的步骤)或this,您可能会发现某些(可能是错误的)WPF版本适用于Wine现在。我现在没有找到任何明确的测试,但值得尝试运行WPF" Hello world"。

UPDATE2:

我已为IlSpy 16.04的最新Wine运行了最新Ubuntu。 32位版本的dotnet45corefonts通过winetricks安装,兼容Windows 7。

这个时候没有崩溃,一切正常。字体看起来非常好。

IlSpy通过WPF显示,loves programming with .NET是必不可少的工具 - 反编译器。

我下载了最新的便携式SharpDevelop(使用WPF构建),没有额外的。它开始了。无法创建WPF项目。创建WinForms。打开一些cs文件并证明一些故障后,尝试输入 - 然后崩溃了。

IlSpy via Wine on Ubuntu

更新

我按照步骤操作,在Ubuntu 14.4上运行最新的ILSpy.exe。

enter image description here

下一项需要注意的事项:

  1. wine表示64位配置不支持dotnet40,更改为32位

  2. 字体很难看,但可读

  3. 基本功能很好 - 我可以看到反编译代码 - 这对于某些开发来说已经足够了,但是View - >搜索和查看 - >选项 - >显示崩溃。

  4. 结论:

    Linux上的WPF是可能的。但需要某种方法来解决问题。

答案 4 :(得分:3)

有一个名为Silverform SDK的库,旨在提供跨平台的WPF和Silverlight实现。

该库以托管代码实现,目前可与OpenTK和Unity3D一起用作渲染后端。主要功能(如绑定,布局,主要控件和基元)已经实现(请参阅Unity网络播放器演示here)。最初它一直专注于Unity3d渲染,而对独立Mono应用程序的支持将在未来作为单独的版本添加。

免责声明:我是该图书馆的开发人员之一。

答案 5 :(得分:2)

来自Olive home page

  

Olive不受支持,应该是   被视为实验软件,   并且因为它实现了转移API   没有任何保证   关于API的稳定性。

我怀疑是否有人会在真实项目中使用它。

答案 6 :(得分:2)

是的,可以使用NoesisGUI实时多平台XAML实现。在Linux中已经发布了一些使用此技术的游戏,如VoidExpanse

披露:我是该产品的开发者之一。

答案 7 :(得分:0)

我几周前听过一个播客采访了miguel de icaza(单声道导演),所以可能是2008年12月中旬,他说他们根本没有WPF支持。

答案 8 :(得分:-2)

理论上,可以针对WinPR或LibWine编译WPF的剥离版本以在Linux上运行。

当前没有这种设置,因此需要有人进行设置。希望这会很快改变。

无论是在完整的Wine环境中还是在完整的Wine环境中运行,我认为这都是严重的过大杀伤力,并且会导致大量的膨胀,因此值得使少量的其他程序起作用。