44

我喜欢使用 .NET 进行编程,尤其是 C# 3.0、.NET 3.5 和 WPF。但我特别喜欢的是 Mono .NET 真正独立于平台。

现在我听说了 Mono 中的 Olive 项目。我找不到某种 Beta。

它已经工作了吗?你们中的任何人有任何经验吗?

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

4

9 回答 9

23

使用以 Silverlight API 为目标的 Moonlight 会更好,它是完整 WPF 的子集。

编辑:当然,Silverlight 不是“打算”用于桌面的,但是没有理由不能在应用程序中嵌入 silverlight 引擎。以前做过,比如Mac NY Times Reader

更多编辑:参见 Miguel 关于独立 Silverlight 应用程序的帖子

于 2009-01-07T19:50:34.560 回答
14

更新:由于人们一直对此表示赞同,我想指出它已经过时了。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 标准的人

于 2009-01-07T21:38:17.760 回答
7

单声道网站

目前,Mono 项目没有计划将 Windows Presentation Foundation API 实现为项目的一部分。

Moonlight 是 silverlight 的一个实现,它是一种基于 WPF 子集的基于浏览器的类似 Flash 的技术。

在我看来,选择不实现 WPF 是 monos 最大的错误。由于 WPF 正迅速成为新的 .net 用户界面的默认选择。有关更多信息,请参阅此博客

于 2009-01-07T20:36:04.330 回答
4

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

该库在托管代码中实现,目前使用 OpenTK 和 Unity3D 作为渲染后端。主要功能,例如绑定、布局、主控件和原语,已经实现(在此处查看 Unity 网络播放器演示)。最初它专注于 Unity3d 渲染,而对独立 Mono 应用程序的支持将在未来作为单独的构建添加。

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

于 2011-07-21T17:19:20.083 回答
4

如果您检查此链接的已知错误(还包括在 Ubuntu 上安装 .NET 所需的步骤),或者您可能发现 WPF 的某些(可能是错误的)版本目前可以在 Wine 上运行。我目前没有找到任何明确的测试,但值得尝试运行 WPF“Hello world”。

更新2:

我已经为16.04运行了最新IlSpy的最新版本。使用 32 位版本并通过与 windows 7 兼容安装。WineUbuntudotnet45corefontswinetricks

这次没有崩溃,一切正常。字体看起来真的很好。

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

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

在 Ubuntu 上通过 Wine 进行 IlSpy

更新

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

在此处输入图像描述

接下来要注意的事项:

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

  2. 字体很丑,但可读

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

结论:

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

于 2015-01-14T10:39:30.647 回答
2

从橄榄主页

Olive 不受支持,应被视为实验性软件,并且由于它实现了不断变化的 API,因此无法保证 API 的稳定性。

我怀疑有人会在实际项目中使用它。

于 2009-01-07T19:47:59.370 回答
2

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

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

于 2015-04-13T20:46:32.587 回答
0

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

于 2009-01-07T19:46:36.533 回答
-2

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

目前没有这样的设置,所以需要有人做一个。希望这可能会很快改变。

就在完整的 Wine 环境中运行或在完整的 Wine 环境中运行而言,我认为这严重过度,并且会导致过多的臃肿,不值得让少量额外的程序工作。

于 2019-07-03T01:41:04.810 回答