2010-07-08 8 views
1

J'ai un fichier xap qui contient un assembly non référencé: b.dll. Cet assemblage a été mis dans le fichier xap manuellement (par une étape de post-construction, dans laquelle je viens d'ajouter le fichier dll au fichier zip (xap)).Extrait un assembly non référencé à partir du fichier xap

Maintenant, au moment de l'exécution, je veux accéder à b.dll et appeler CreateInstance dessus.

C'est où je suis coincé. Comment puis-je obtenir une instance Assembly pour b.dll à partir du fichier xap?

Merci!

Répondre

1

Vous pouvez initialiser un objet StreamResourceInfo avec un flux zip téléchargé (Xap ou autre).

Vous pouvez ensuite utiliser Application.GetResourceStream pour extraire un flux de fichier à partir de ce fichier zip à l'aide d'un Uri. Dans ce cas, la DLL qui peut ensuite charger avec AssemblyPart et ensuite appeler un CreateInstance sur elle: -

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)); 
Questions connexes