下面的代码是网上搜索的,加载XAP的代码,现在是执行后没有得到所要的结果,大家帮忙给看一下什么原因
void myButton_Click(object sender, RoutedEventArgs e)
{
Uri address = new Uri("http://localhost:1699/ClientBin/ExternalProject.xap");
WebClient webClient = new WebClient();
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
webClient.OpenReadAsync(address);
HtmlPage.Window.Alert(address.ToString());//这一步能执行,
}
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
// 得到下载结果
Assembly assembly = LoadAssemblyFromXap(e.Result, "ExternalProject.dll");//other project name.dll
UIElement element = assembly.CreateInstance("ExternalProject") as UIElement;//other project name.mainPage
//Children.Add(element);
//this.holer.Children.Add(element);
//HtmlPage.Window.Alert(element.ToString());
}
Assembly LoadAssemblyFromXap(Stream packageStream, String assemblyName)
{
Stream stream = Application.GetResourceStream(
new StreamResourceInfo(packageStream, null),
new Uri("AppManifest.xaml", UriKind.Relative)).Stream;
String appManifestString = new StreamReader(stream).ReadToEnd();
HtmlPage.Window.Alert(appManifestString);//这一步能执行,显示AppManifestString的内容
Deployment deployment = (Deployment)System.Windows.Markup.XamlReader.Load(appManifestString);
Assembly assembly = null;
foreach (AssemblyPart assemblyPart in deployment.Parts)
{
if (assemblyPart.Source == assemblyName)
{
String source = assemblyPart.Source;
StreamResourceInfo streamInfo = Application.GetResourceStream(
new StreamResourceInfo(packageStream,
"application/binary"),
new Uri(source, UriKind.Relative));
assembly = assemblyPart.Load(streamInfo.Stream);
break;
}
}
return assembly;
}
|