我喜欢使用 .NET 进行编程,尤其是 C# 3.0、.NET 3.5 和 WPF。但我特别喜欢的是 Mono .NET 真正独立于平台。
现在我听说了 Mono 中的 Olive 项目。我找不到某种 Beta。
它已经工作了吗?你们中的任何人有任何经验吗?
编辑:我知道月光。但我想要一个独立的 WPF 应用程序。并且因为Moonlight,我希望 Linux 上的 WPF 能够成为现实。
使用以 Silverlight API 为目标的 Moonlight 会更好,它是完整 WPF 的子集。
编辑:当然,Silverlight 不是“打算”用于桌面的,但是没有理由不能在应用程序中嵌入 silverlight 引擎。以前做过,比如Mac NY Times Reader
更多编辑:参见 Miguel 关于独立 Silverlight 应用程序的帖子
更新:由于人们一直对此表示赞同,我想指出它已经过时了。Mono 几年前被 MS 收购,他们对开源的态度已经改变,所以认为这篇文章已经过时了。(与 WPF 框架本身一样过时,呵呵)。
当涉及到 Winforms 和 WPF 等 Microsoft API 时,Mono 有点不舒服。.Net 技术的一个子集是 ECMA 标准,但这些 API 的免费实现可能在法律基础上更不稳定。我相信这是 Novell 和 Microsoft 之间的契约的一个重要因素,这对 Novell 客户来说是件好事。但是,使用 Mono 而不是 Novell 客户的人不受保护。出于这个原因,F/OSS 社区中的很多人都对 Mono 持怀疑态度,尽管它具有技术优势。
出于这个原因,Gtk# 将永远是首选,因为它是真正免费的。无论如何,许多人认为它优于 Winforms。就 WPF 而言,它几乎肯定是 Novell 的低优先级。他们最终可能会实施它,但我希望 Moonlight 是您在可预见的未来可以获得的最接近的。
自发布此消息以来,Microsoft 已将其承诺扩展到任何实施 ECMA 334 和 335 标准的人。
目前,Mono 项目没有计划将 Windows Presentation Foundation API 实现为项目的一部分。
Moonlight 是 silverlight 的一个实现,它是一种基于 WPF 子集的基于浏览器的类似 Flash 的技术。
在我看来,选择不实现 WPF 是 monos 最大的错误。由于 WPF 正迅速成为新的 .net 用户界面的默认选择。有关更多信息,请参阅此博客。
有一个名为Silverform SDK的库,旨在提供跨平台的 WPF 和 Silverlight 实现。
该库在托管代码中实现,目前使用 OpenTK 和 Unity3D 作为渲染后端。主要功能,例如绑定、布局、主控件和原语,已经实现(在此处查看 Unity 网络播放器演示)。最初它专注于 Unity3d 渲染,而对独立 Mono 应用程序的支持将在未来作为单独的构建添加。
免责声明:我是该库的开发人员之一。
如果您检查此链接的已知错误(还包括在 Ubuntu 上安装 .NET 所需的步骤),或者您可能会发现 WPF 的某些(可能是错误的)版本目前可以在 Wine 上运行。我目前没有找到任何明确的测试,但值得尝试运行 WPF“Hello world”。
更新2:
我已经为16.04运行了最新IlSpy
的最新版本。使用 32 位版本并通过与 windows 7 兼容安装。Wine
Ubuntu
dotnet45
corefonts
winetricks
这次没有崩溃,一切正常。字体看起来真的很好。
IlSpy
通过 WPF 和loves programming with .NET
必不可少的工具 - 反编译器显示。
我下载了最新的便携式 SharpDevelop(使用 WPF 构建),没有额外的。它开始了。无法创建 WPF 项目。创建 WinForms。打开一些 cs 文件并证明一些故障后,尝试输入 - 它崩溃了。
更新
我按照步骤在 Ubuntu 14.4 上运行了最新的 ILSpy.exe。
接下来要注意的事项:
wine 表示 dotnet40 不支持 64 位配置,改为 32 位
字体很丑,但可读
基本功能工作正常 - 我可以看到反编译的代码 - 这对于某些开发来说已经足够了,但是查看 -> 搜索和查看 -> 选项 -> 显示崩溃。
结论:
Linux 上的 WPF 是可能的。但是需要一些方法来解决问题。
是的,可以使用NoesisGUI实时多平台 XAML 实现。在 Linux 中已经有一些使用这种技术发布的游戏,比如VoidExpanse
披露:我是该产品的开发人员之一。
我听到一个播客采访 miguel de icaza(单声道领导)可能是几周前,所以那可能是 2008 年 12 月中旬,他说他们还没有 WPF 支持。
理论上,可以针对 WinPR 或 LibWine 编译 WPF 的剥离版本以在 Linux 上运行。
目前没有这样的设置,所以需要有人做一个。希望这可能会很快改变。
就在完整的 Wine 环境中运行或在完整的 Wine 环境中运行而言,我认为这严重过度,并且会导致过多的臃肿,不值得让少量额外的程序工作。