2010-07-08 2 views
1

참조되지 않은 어셈블리 인 b.dll이있는 xap 파일이 있습니다. 이 어셈블리는 수동으로 xap 파일에 저장되었습니다 (포스트 빌드 단계에 의해 dll을 zip (xap) 파일에 추가 함).xap 파일에서 참조되지 않은 어셈블리 추출

이제 런타임시 b.dll에 액세스하여 CreateInstance를 호출하려고합니다.

여기가 내가 붙어 있습니다. xap 파일에서 b.dll에 대한 Assembly 인스턴스를 가져 오는 방법은 무엇입니까?

감사합니다.

답변

1

다운로드 된 Zip 스트림 (Xap 또는 기타)으로 StreamResourceInfo 개체를 초기화 할 수 있습니다.

그런 다음 Application.GetResourceStream을 사용하여 Uri을 사용하여 해당 zip에서 파일 스트림을 가져올 수 있습니다. 이 경우에는 AssemblyPart을로드 한 다음 CreateInstance을 호출 할 수있는 DLL을 다음과 같이 호출하십시오. -

WebClient client = new WebClient() 
client.OpenReadCompleted += (s, args) => 
{ 
    StreamResourceInfo zip = new StreamResourceInfo(args.Result, "application/zip"); 
    StreamResourceInfo dll = Application.GetResourceStream(zip, new Uri("b.dll", UriKind.Relative)); 
    AssemblyPart assemblyPart = new AssemblyPart(); 
    Assembly assembly = assemblyPart.Load(dll.Stream); 

    _someClassFromB = assembly.CreateInstance("b.SomeClass"); 
}; 
client.OpenReadAsync(new Uri("your.xap", UriKind.Relative)); 
관련 문제