我知道WPF库不是由单类库实现的,但是(据我所知)单声道2.6运行时与.NET 2.0 / 3.5运行时完全兼容,所以如果WPF库只调用PInvoke windows api理论上可以使用单声道运行时在Windows上运行wpf应用程序。 想要这样做的原因是将wpf应用程序部署为Windows的独立可执行文件。有没有人尝试过类似的东西?如果是的话,结果是什么?
答案 0 :(得分:5)
简而言之......否
Mono 会提供Moonlight支持,根据我的理解,这也会使用XAML的子集来创建其UI(the same as Silverlight does),但有{{3} }}。例如,它仅限于非微软和非微软平台。
如果您想查找WPF / XAML的开源跨平台替代方案列表,我正致力于legal complications involved。
答案 1 :(得分:3)
嗯,我确实尝试了一下,收效甚微。如果需要dll-s以混合模式(PresentationFramework,PresenationCore,WindowsBase,System.Xaml)实现,我首先检查corflags。它们都是纯粹的CIL实现,因此单声道应该可以正常工作。接下来,我将提到的DLL安装到mono的GAC中,并尝试运行一个非常简单的WPF应用程序。这就是我得到的:
- 断言在mini-codegen.c:1186,条件`reginfo [sreg] .born_in
0'没有达到 此应用程序已请求运行时将其终止 不寻常的方式请联系应用程序的支持团队获取更多信息 信息。
所以虽然从理论上说这一切都应该可行,但WPF可能很复杂,可以在单声道上运行开箱即用,如果WPF的纯CIL实现与单声道和.NET Framework兼容,那将会很酷
答案 2 :(得分:2)
据我所知,Mono does not support WPF。
此外,WPF使用图形模块并直接与GPU交互。所以我看不出你如何使用没有隐藏的pinvokes的WPF。
答案 3 :(得分:0)
听起来您需要了解WPF架构以更好地理解它。
http://msdn.microsoft.com/en-us/library/ms750441.aspx
Mono中缺少许多部分,仅在.NET中可用。因此,您的“理论”不正确,即使在Windows上也无法在Mono上运行WPF应用程序。
答案 4 :(得分:0)
在MIX 2010上,Miguel de Icaza在他的会议中表示,Mono不会支持WPF。任何与WPF类似支持相切的东西只是提供Moonlight所需的东西。
答案 5 :(得分:0)
不完整,但是..
您可以在桌面模式下使用Moonlight 4(silverlight 4): -
https://github.com/inorton/MoonBase - MVVM助手
https://github.com/inorton/XamlPreviewer - XamlPad clone