La structure du répertoire de mon projet Silverlight est comme ce qui suit:Silverlight: Télécharger des fichiers locaux avec WebClient
\Bin
- MainModule.xap
- \Images
--- Image1.png
--- Image2.png
- \Modules
--- SubModule.xap
Je veux être capable de l'exécuter soit par un serveur Web ou par Visual Studio directement (pour le débogage fins que je veux contourner le téléchargement de contenu).
Dans mon code de chargement des médias je faire quelque chose comme ce qui suit:
if (runningLocally)
{
var bitmapImage = new BitmapImage();
bitmapImage.UriSource = new Uri("Images/Image1.png", UriKind.Relative);
var image = new Image();
image.Source = bitmapImage;
}
else
{
WebClient wc = new WebClient();
wc.OpenReadCompleted += (s, e) =>
{
var bitmapImage = new BitmapImage();
bitmapImage.SetSource(e.Result);
var image = new Image();
image.Source = bitmapImage;
};
wc.OpenReadAsync(new Uri("Images/Image1.png", UriKind.Relative));
}
Cela fonctionne pour les images mais j'ai aussi des sous-modules qui sont des assemblages tout logement UserControl
s. Comme Silverlight n'a pas la capacité de lire le disque, je me suis résigné au fait que je vais devoir "télécharger" les XAP dont j'ai besoin, que je cours en local ou pas. Le problème est si je lance le projet au niveau local et d'essayer d'utiliser un WebClient
pour télécharger un XAP je reçois une exception:
System.Net.WebException: An exception occurred during a WebClient request. ---> System.NotSupportedException: The URI prefix is not recognized.
Est-il possible (WebClient ou autre) je peux arriver à mes XAPs sous-module lors de l'exécution le projet Silverlight directement plutôt que de frapper un serveur web?
EDIT:
oublié de mentionner aussi j'ai essayé d'utiliser avec un DeploymentCatalog
MEF et alors que je ne suis pas une exception, rien Compose jamais si je ne peux en supposant qu'il a le même problème.