Errores al hacer referencia a la biblioteca de clases Silverlight desde la aplicación WPF
silverlight-4.0 .net-4.0 (3)
Tengo una aplicación WPF y una aplicación Silverlight. Ambos se utilizan para mostrar un mapa y compartir algunas de las mismas funciones.
Creé un proyecto de biblioteca de clase de Silverlight para permanecer seco. Me refiero a esto tanto de Silverlight como de WPF. Contiene algunos métodos de utilidad que son útiles en ambos proyectos. Por ejemplo, tengo este método:
public static void CenterText(TextBlock name, Polygon poly)
El proyecto Silverlight no tiene ningún problema con esto. Sin embargo, aparece el siguiente error al llamar esto desde mi aplicación WPF:
El tipo ''System.Windows.Shapes.Polygon'' se define en un conjunto al que no se hace referencia. Debe agregar una referencia al ensamblado ''System.Windows, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e''
Sin embargo, tengo esta línea en la parte superior del archivo:
using System.Windows.Shapes;
entonces WPF puede ver la clase Polygon perfectamente bien. Supongo que la biblioteca de clase Silverlight usa una versión del framework que no es compatible con la versión que está usando el proyecto WPF.
Entonces, la pregunta es: ¿estoy reescribiendo exactamente el mismo código en mi aplicación WPF o hay alguna forma de que pueda compartir entre los dos?
¡Gracias!
En Silverlight, la clase se encuentra en System.Windows.dll
mientras que en WPF, en PresentationFramework.dll
la biblioteca intenta obtener acceso al ensamblaje de Silverlight, al que no se hace referencia de forma predeterminada en una aplicación de WPF.
Me encontré con este error porque había descargado el SDK de Expression Blend para Silverlight en lugar de lo que DEBERÍA haber descargado: Kit de desarrollo de software (SDK) Microsoft Expression Blend para .NET 4. Se puede encontrar en el sitio web de MSFT, aquí:
http://www.microsoft.com/en-us/download/details.aspx?id=10801
Tan pronto como descargué el SDK de Expression Blend para .Net, eliminé todos los SDK de Blend para las referencias de Silverlight y agregué esas mismas referencias como Blend for .Net, ya estaba funcionando.
Tiene razón, Silverlight usa una versión completamente separada del marco. Es mucho, mucho más pequeño que el evento el tiempo de ejecución del cliente .NET.
Esto significa que no puede mezclar montajes WPF y Silverlight en la misma aplicación.