我的Silverlight项目的目录结构如下:
有没有办法(WebClient或其他方式)在直接运行Silverlight项目而不是访问Web服务器时获取我的子模块XAP?
编辑:
忘记提到我也尝试使用MEF和
\Bin
- MainModule.xap
- \Images
--- Image1.png
--- Image2.png
- \Modules
--- SubModule.xap
我希望能够通过Web服务器或直接通过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
的程序集。由于Silverlight没有读取磁盘的能力,我已经接受了这个事实,无论我是本地运行还是不运行,我都必须“下载”所需的XAP。问题是如果我在本地运行项目并尝试使用WebClient
下载XAP,则会出现异常:
System.Net.WebException: An exception occurred during a WebClient request. ---> System.NotSupportedException: The URI prefix is not recognized.
有没有办法(WebClient或其他方式)在直接运行Silverlight项目而不是访问Web服务器时获取我的子模块XAP?
编辑:
忘记提到我也尝试使用MEF和
DeploymentCatalog
,虽然我没有得到异常,但什么也没有组合,所以我只能认为它有相同的问题。