2011-01-06 9 views
12

Tengo una solución que contiene tanto una solución Silverlight 4 como una WPF 4. Una es la versión web de la aplicación y la otra es la versión de escritorio.La mejor manera de compartir código entre WPF y Silverlight

Ambos proyectos tienen clases e interfaces de dominio similares y ambos acceden a la nube para almacenamiento y otras cosas.

Quería crear un proyecto común de interfaces y clases, así que creé una biblioteca de clases, pero no lo sé, Silverlight no puede agregar una referencia a una biblioteca de clases. Así que creé el proyecto común como una biblioteca Silverlight clase, pero cuando me refiero a que a partir del proyecto de WPF consigo advertencias:

Warning The project 'Interface.Common.Silverlight' cannot be referenced. The referenced project is targeted to a different framework family (Silverlight)

e incluso se producen errores de tiempo de ejecución de carga de clases cuando se utiliza cualquier clase de la que la biblioteca porque "System.Windows no se puede encontrar en el tiempo de ejecución"

Quiero compartir el código entre los dos proyectos, ¿cómo se puede lograr esto de una manera limpia?

Gracias por cualquier ayuda que puede dar

+1

MSDN - Código compartidas entre Silverlight y WPF: http://msdn.microsoft.com/en-us/library/ff921109(v=pandp.40).aspx –

+0

gracias , Estoy haciendo esto ahora, pero todavía tengo muchas preguntas ... ¿cómo puedes compartir el código de acceso de Azure entre SL y WPF? – Mark

+2

¡Buscadores de atención! Consulte [Portable Class Libraries] (http://msdn.microsoft.com/en-us/library/gg597391.aspx), ahora compatible con .NET 4.0. – Will

Respuesta

7

Cree dos proyectos paralelos uno para WPF y otra para Silverligth. Para uno de los proyectos, agregue los archivos como enlaces en lugar de archivos.

he hecho esto con éxito para la Microsoft Silverlight Analytics Framework con una base de código para Silverlight 4, WPF y Windows Phone 7.

+0

para crear dos proyectos Common.Interface (Common.Interface.SL y Common.Interface.WPF) y los archivos en uno de estos (¿cuál?) Serán enlaces en lugar de archivos reales. ¿Qué logra esto? – Mark

+0

En Proyecto -> Agregar elemento existente, observe la flecha desplegable al lado del botón Agregar. Descargue MvvmLight Toolkit para obtener un ejemplo de uso compartido de código entre Sliverlight y proyectos de WPF usando archivos C# vinculados: http://mvvmlight.codeplex.com/ –

+0

Sí, esta es la que veo que la mayoría de la gente hace. No importa qué proyecto tenga los archivos y cuál tenga los "elementos vinculados". Entonces, si tiene un código que debe ser una sola plataforma, puede ser solo en un proyecto, y si una clase debe ser un poco diferente, puede hacer cosas como #ifdef SILVERLIGHT, o tener una clase parcial con un método/propiedad/etc. definido de manera diferente en el proyecto de cada plataforma en otro parcial de la misma clase. –

0

¿Qué pasa con el intercambio de código XAML con Silverlight y WPF

0

Crear un proyecto "Portable" . que se puede hacer referencia tanto de WPF y Silverlight

Cuestiones relacionadas