Структура каталогов моего Silverlight проекта, как следующее:Silverlight: Загрузить локальные файлы с WebClient
\Bin
- MainModule.xap
- \Images
--- Image1.png
--- Image2.png
- \Modules
--- SubModule.xap
Я хочу, чтобы иметь возможность запускать его либо через веб-сервер или через Visual Studio напрямую (для отладки цели я хочу обойти загрузку контента).
В моей загрузки носителя кода я сделать что-то вроде следующего:
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));
}
Это работает для изображений, но я также суб-модулей, которые только сборками корпус UserControl
s. Поскольку Silverlight не имеет возможности читать диск, я смирился с тем фактом, что мне придется «загружать» XAP-файлы, которые мне нужны, если я работаю локально или нет. Проблема заключается в том, если я запустить проект локально и попытаться использовать WebClient
скачать XAP я получаю исключение:
System.Net.WebException: An exception occurred during a WebClient request. ---> System.NotSupportedException: The URI prefix is not recognized.
Есть ли способ (WebClient или иначе) я могу получить мои суб-модуль XAPs при запуске проект Silverlight напрямую, а не попадание на веб-сервер?
EDIT:
забыл упомянуть, я также попытался с помощью MEF с DeploymentCatalog
и пока я не получаю исключение, никогда ничего не сочиняет, поэтому я могу только при условии, что та же самая проблема.