Linux上的WPF(已经)是可能的吗?
我喜欢用.NET编程,特别是C#3.0,.NET 3.5和WPF。 但是我特别喜欢的是,Mono .NET真的是平台无关的。
现在我听说了单声道的橄榄项目。 我找不到某种Beta版本。
它已经工作了吗? 你有没有做过任何的经验?
编辑:我知道月光。 但是我想要一个独立的WPF应用程序。 而因为月光,我希望Linux上的WPF将成为现实。
您将更好地使用Moonlight,它以Silverlight API为目标,Silverlight API是完整WPF的一个子集。
编辑:当然,Silverlight不是桌面的“意图”,但没有理由不能在应用程序中embeddedSilverlight引擎。 之前已经完成了,例如Mac纽约时报读者
更多编辑:请参阅独立Silverlight应用程序中的 Miguel的文章
对于Winforms和WPF等微软API,单声道有点不舒服。 .Net技术的一个子集是ECMA标准,但这些API的免费实现可能是更为合法的。 我相信这是Novell和微软之间的契约的一个重要因素,这对Novell的客户是有好处的。 但是使用非Novell客户的Mono的人不受保护。 由于这个原因,很多F / OSS社区的人看起来对Mono有嘲讽,尽pipe它有技术上的优点。
出于这个原因,Gtk#将永远是首选,因为它是真正的免费。 很多人认为它优于WinForms。 就WPF而言,几乎可以肯定Novell是低优先级的。 他们可能会最终实现这一目标,但我期望Moonlight能成为最可靠的未来。
自从发布这个以来,微软已经将他们的盟约扩展到了执行ECMA 334&335标准的任何人 。
从单声道网站
此时,Mono项目没有计划将Windows Presentation Foundation API作为项目的一部分来实现。
Moonlight是silverlight的一个实现,它是基于浏览器的基于WPF子集的Flash技术。
在我看来,不实现WPF的select是最大的错误。 由于WPF正迅速成为新的.net用户界面的默认select。 看到这个博客更多 。
有一个名为Silverform SDK的库,旨在提供跨平台的WPF和Silverlight实现。
该库以托pipe代码实现,目前与OpenTK和Unity3D一起作为渲染后端。 主要的function,如绑定,布局,主要控制和基元,已经实现( 在这里查看Unity Web Player演示)。 最初,它一直专注于Unity3d渲染,而对独立Mono应用程序的支持将在未来作为单独构build添加。
免责声明:我是图书馆的开发人员之一。
从橄榄主页 :
Olive是不被支持的,应该被认为是实验性的软件,并且由于它实现了API的转换,所以对API的稳定性没有任何保证。
我怀疑有人会在实际的项目中使用它。
是的,可以使用NoesisGUI实时多平台XAML实现。 在Linux中已经有一些使用这种技术的游戏,比如VoidExpanse
披露 :我是这个产品的开发者之一。
如果你检查这个链接的已知错误(也包括在Ubuntu上安装.NET所需的步骤)或者你可能会发现WPF的一些(可能是越野车)版本现在在Wine上工作。 目前我还没有发现任何明确的testing,但值得尝试运行WPF“Hello world”。
UPDATE2:
我已经运行最新的Ubuntu
16.04最新的Wine
IlSpy
。 与32位版本的dotnet45
和corefonts
通过与Windows 7兼容的corefonts
安装。
这一次没有崩溃,所有的事情都很好。 字体看起来非常好。
IlSpy
通过WPF显示,对于loves programming with .NET
人来说是必不可less的工具 – 反编译器。
我下载了最新的便携式SharpDevelop(使用WPF构build)没有额外的。 它开始了。 无法创buildWPF项目。 创buildWinForms。 打开一些cs文件,并certificate一些小故障,试图打字 – 它崩溃了。
UPDATE
我遵循的步骤,并得到最新的ILSpy.exe在Ubuntu 14.4上运行。
下一项注意事项:
-
wine表示dotnet40不支持64位configuration,改为32位
-
字体是丑陋的,但可读
-
基本的function工作正常 – 我可以看到反编译的代码 – 这是足够的一些发展,但查看 – >search和查看 – >选项 – >显示崩溃。
结论:
Linux上的WPF是可能的。 但是需要一些方法来解决问题。
我听说一个播客可能会在几个星期前接受一个采访miguel de icaza的播客,这也许可能是2008年12月中旬,他说他们还没有WPF的支持。