2009-10-02 6 views
6

J'ai une application Silverlight où j'ai besoin d'utiliser la classe Vector dans System.Windows dans le projet Web. Mais VS se plaint que System.Windows n'existe pas. J'ai essayé d'ajouter la référence, mais ce n'est pas dans la liste des espaces de noms à ajouter. Dans l'onglet .NET, il va de System.Web.Services à System.Windows.Forms et saute System.Windows tout à fait.manquant System.Windows référence

Ce qui est vraiment étrange, c'est que System.Windows existe dans la liste de référence du projet Silverlight. En outre, j'ai une autre application Silverlight sur cette machine avec exactement la même configuration (deux projets, un Silverlight, un Web), et la référence est là.

J'ai vu quelqu'un d'autre ici avoir un problème similaire, mais aucune des solutions n'a fonctionné pour moi. Quelqu'un d'autre a-t-il vécu cela?

Répondre

7

Je l'ai trouvé! Vous devez ajouter une référence à WindowsBase. La manière habituelle (je suppose) de configurer une application Silverlight est d'avoir deux projets: un pour le code client Silverlight, et un pour les pages ASPX côté serveur. Le pool de références Silverlight dispose de System.Windows. Le pool de référence aspx ne l'est pas. Ce qu'il a à la place, c'est la DLL "WindowsBase", qui rend l'espace de noms System.Windows (et probablement d'autres) disponible dans votre bloc "using". Mais ce n'est pas inclus dans le projet par défaut.

+0

Cela n'a pas fonctionné pour moi. J'essaie d'utiliser System.Windows.Media.Imaging.BitmapImage, donc je suppose que ce n'est pas dans WindowsBase. (Remarque: Je peux ajouter une référence à System.Windows.DLL sur le côté client (sliverlight), mais pas sur le côté serveur. – tkerwood

+1

il est dans (#region Assembly System.Windows.dll, v2.0.50727 // c: \ Program Files (x86) \ Assemblys de référence \ Microsoft \ Framework \ Silverlight \ v4.0 \ System.Windows.dll #endregion) Donc, uniquement disponible du côté du client Silverlight. Image à la place – tkerwood

+0

Dans Silverlight 5 cela ne semble pas fonctionner ... – Knasterbax

0

Il semble que la solution affichée par Klay ne fonctionne pas avec Silverlight 5 (du moins pas sur ma machine).

Vous pouvez également utiliser Vector2 classe de Microsoft.Xna.Framework

Mais cela nécessite un peu de réécriture de code basé sur System.Windows.Vector, depuis le VNA Vector2 utilise des flotteurs à la place de doubles.