2010-06-02 12 views
9

Sé que las bibliotecas WPF no están implementadas por la biblioteca de clases mono, sin embargo (hasta donde yo sé) el tiempo de ejecución mono 2.6 es totalmente compatible con .NET 2.0/3.5 runtime, por lo que si las bibliotecas WPF solo hacen llamadas a Windows api teóricamente es posible ejecutar una aplicación wpf en Windows utilizando el tiempo de ejecución mono. La razón para querer eso es desplegar una aplicación wpf como un ejecutable independiente para Windows. ¿Alguien ha intentado algo así antes? Si es así, ¿cuáles fueron los resultados?¿Es posible crear un paquete Mono que incluya bibliotecas WPF?

+1

Windows Vista y Windows 7 salen de la caja con .NET 2.0 y 3.0. Por lo tanto, si quiere evitar decirles a sus clientes que necesitan instalar .NET Framework, simplemente apuntar a una de esas versiones podría ser una solución mucho más simple que ir por una aplicación independiente mono. –

Respuesta

5

En resumen ... No

At this point, the Mono project does not have plans to implement Windows Presentation Foundation APIs as part of the project

Mono se proporcionar Moonlight soporte que, por lo que entiendo, también sería utilizar un subconjunto de XAML para crear su interfaz de usuario (the same as Silverlight does), pero hay legal complications involved. Por ejemplo, está limitado a plataformas que no son de Microsoft ni de Mac.

Si desea encontrar una lista de alternativas de plataforma abierta a WPF/XAML, estoy trabajando en compile a list of viable alternatives.

+1

Como ya dije en las últimas dos respuestas, no estoy preguntando si mono tiene una implementación equivalente de las bibliotecas de WPF, sé que no es así. Lo que pregunté es si alguien intentó ejecutar una aplicación wpf en Windows utilizando el tiempo de ejecución mono, no importa si esta aplicación usa las bibliotecas administradas que se envían desde .NET o Mono, todo lo que quiero saber es si el tiempo de ejecución mono (mono.dll) funciona bien con las bibliotecas wpf; –

+0

@Thiado "Lo que pregunté es si alguien intentó ejecutar una aplicación wpf en Windows utilizando el tiempo de ejecución mono" El problema con esa afirmación es que WPF no puede ejecutarse utilizando el tiempo de ejecución mono porque el tiempo de ejecución mono no lo admite. La pregunta es equivalente a preguntar "¿funcionan bien las winform con mono?" Claramente, mono no soporta y no admitirá WPF de ninguna forma ahora o en el futuro. Excepto tal vez Silverlight/Moonlight de una manera limitada pero me dirigí a esa avenida. Cuando digo 'Mono' me refiero al tiempo de ejecución y la biblioteca. –

+0

Evan, hay una diferencia entre Mono runtime y Mono BCL. Mono BCL no tiene planes de agregar bibliotecas WPF. Sin embargo, Mono runtime es una implementación de ECMA Common Language Infrastructure. Mono runtime y .NET runtime son ambos programas nativos cuyo principal objetivo es ejecutar ensamblados administrados (compilación JIT) (System.dll, PresentationFramework.dll). Es por eso que Mono puede ejecutar programas escritos para .NET y viceversa. Por eso publiqué esta pregunta. Teóricamente, el tiempo de ejecución Mono puede ejecutar bibliotecas WPF, así como también .NET (siempre que esté en Windows debido a dependencias de Directx). –

2

Por lo que sé, Mono does not support WPF.

Además, WPF usa módulos de gráficos e interactúa directamente con la GPU. Así que no puedo ver cómo puedes usar WPF sin pinchazos ocultos.

+0

Creo que eso significa que la biblioteca mono clase base no implementa las bibliotecas WPF ((presentationcore.dll, presentationframework.dll ...). Por lo que yo entiendo (http://en.wikipedia.org/wiki/Windows_Presentation_Foundation) WPF hace llamadas no administradas (utilizando PInvoke?) a milcore.dll que se comunica con DirectX. Las bibliotecas WPF no son compatibles con los sistemas Unix debido a esa dependencia de DirectX, sin embargo creo que sus bibliotecas se pueden ejecutar en el tiempo de ejecución mono (que puede ejecutar .net 3.5 bibliotecas administradas) SI el tiempo de ejecución está cargado en Windows. –

+0

que puede ser posible, nunca intenté con mono fuera del entorno de Unix. – Amirshk

0

Parece que necesita leer sobre arquitectura WPF para comprenderlo mejor.

http://msdn.microsoft.com/en-us/library/ms750441.aspx

Muchas piezas faltan en Mono y únicamente disponible en .NET. Por lo tanto, su "teoría" no es correcta, y no puede ejecutar aplicaciones WPF en Mono, incluso en Windows.

+0

¿Qué quiere decir con "piezas faltantes en Mono y únicamente disponibles en .NET"? Ambas 'PresentationCore.dll' y 'PresentationFramework.dll' son bibliotecas administradas, lo que las hace compatibles con el JIT de Mono. La única pieza no administrada de WPF es 'milcore.dll' que (que yo sepa) se puede llamar desde administrado código a través de PInvoke o llamadas CLR internas (ambas son compatibles con Mono JIT). He leído el enlace que publicaste y no dice nada acerca de una función que solo está disponible para el CLR de .NET, pero quizás estás dispuesto a explicarlo. –

0

En MIX 2010 Miguel de Icaza dijo en su sesión que Mono no va a ser compatible con WPF. Cualquier cosa tangencialmente relacionada con el soporte tipo WPF es solo para proporcionar lo que se necesita para Moonlight.

3

Bueno Lo intenté con poco éxito. Primero compruebo con corflags si es necesario. Los dll-s se implementan en modo mixto (PresentationFramework, PresenationCore, WindowsBase, System.Xaml). Todas son implementaciones CIL puras, así que deberían funcionar bien con mono. Luego instalé las DLL mencionadas en el GAC de mono e intenté ejecutar una aplicación WPF muy simple. Esto es lo que tengo:

  • aserción en la mini-codegen.c: 1186, condición `Reginfo [SREG] .born_in

    0' no se cumplen Esta aplicación ha solicitado el tiempo de ejecución para terminarlo en una forma inusual .Póngase en contacto con el equipo de soporte de la aplicación para obtener más información acerca de .

Así que, aunque en teoría esto debería todo el trabajo, WPF es probablemente manera de complejo para funcionar fuera de la caja de mono, que estaría bien si había una aplicación CIL pura de WPF que era compatabile con ambos mono y .NET Framework.

Cuestiones relacionadas