Извлечь несвязанную сборку из файла xap - PullRequest
1 голос
/ 08 июля 2010

У меня есть файл xap, содержащий сборку без ссылок: b.dll. Эта сборка была помещена в файл xap вручную (после этапа сборки, в котором я просто добавляю файл dll в zip (xap)).

Теперь во время выполнения я хочу получить доступ к b.dll и вызвать на нем CreateInstance.

Вот где я застрял. Как я могу получить экземпляр Assembly для b.dll из файла xap?

Спасибо!

1 Ответ

1 голос
/ 09 июля 2010

Вы можете инициализировать объект StreamResourceInfo загруженным потоком zip (Xap или другим способом).

Затем можно использовать Application.GetResourceStream, чтобы получить поток для файла из этого zip-файла, используя Uri. В этом случае DLL, которая может затем загрузить с AssemblyPart, а затем вызвать CreateInstance: -

 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...