2009-10-02 14 views
6

Tengo una aplicación Silverlight donde necesito usar la clase Vector en System.Windows dentro del proyecto web. Pero VS se queja de que System.Windows no existe. Intenté agregar la referencia, pero no está en la lista de espacios de nombres para agregar. En la pestaña .NET, va de System.Web.Services a System.Windows.Forms y omite System.Windows por completo.Falta la referencia de System.Windows

Lo que es realmente extraño es que System.Windows EXISTE en la lista de referencias en el proyecto de Silverlight. Además, tengo otra aplicación Silverlight en esta máquina con exactamente la misma configuración (dos proyectos, una Silverlight, una Web), y la referencia está ahí.

Vi que alguien más tenía un problema similar, pero ninguna de las soluciones funcionó para mí. Alguien más ha experimentado esto?

Respuesta

7

¡Lo encontré! Tienes que agregar una referencia a WindowsBase.

La forma habitual (supongo) de configurar una aplicación de Silverlight es tener dos proyectos: uno para el código de cliente de Silverlight y otro para las páginas de aspx del lado del servidor. El grupo de referencia de Silverlight tiene System.Windows disponible en él. El grupo de referencia aspx no. Lo que tiene, en cambio, es el dll "WindowsBase", que hace que el espacio de nombres System.Windows (y probablemente otros) esté disponible en su bloque "using". Pero no está incluido en el proyecto por defecto.

+0

Esto no funcionó para mí. Estoy tratando de usar System.Windows.Media.Imaging.BitmapImage, así que supongo que no está en WindowsBase. (Nota: puedo agregar una referencia a System.Windows.DLL en el lado del cliente (sliverlight), pero no en el lado del servidor. – tkerwood

+1

está en (#region Assembly System.Windows.dll, v2.0.50727 // c: \ Archivos de programa (x86) \ Conjuntos de referencia \ Microsoft \ Framework \ Silverlight \ v4.0 \ System.Windows.dll #endregion) Por lo tanto, solo está disponible en el lado del cliente de Silverlight. Lo veré utilizando System.Drawing. Imagen en su lugar. – tkerwood

+0

En Silverlight 5 parece que esto no funciona ... – Knasterbax

0

Parece que la solución publicada por Klay no funciona con Silverlight 5 (al menos no en mi máquina).

Alternativamente, puede utilizar Vector2 clase de Microsoft.Xna.Framework

Pero esto requiere un poco de reescritura del código basado en System.Windows.Vector, ya que el VNA Vector2 utiliza flotadores en lugar de dobles