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