Использование MEF с экспортом проекта, который использует ресурсы (xml), содержащиеся в xap - PullRequest
2 голосов
/ 09 марта 2010

Я делаю приложение для проверки концепции в SL4 с использованием MEF, и как часть приложения я импортирую еще один xap из существующего проекта Silverlight и отображаю его в своем хост-проекте.

Проблема в том, что существующее приложение использует некоторые XML-файлы (в качестве содержимого) и использует linq2xml для загрузки этих файлов, которые (предположительно) связаны в xap.

Когда я составляю приложение, инициализация завершается неудачно, поскольку приложение хоста не содержит XML-файлов. Если я скопирую эти xml-файлы в хост-проект и запустите его, композиция будет работать нормально. Однако мне нужно сохранить XML-файлы в исходном проекте.

Есть ли способ, которым я могу скачать xap и просмотреть его содержимое для файлов xml, а затем загрузить их в xap хоста во время выполнения, чтобы после того, как произошло компоновка, были найдены необходимые ресурсы xml? *

Или я должен разработать какой-то контракт с импортом / экспортом для передачи файлов xml на хост xap?

Поскольку люди, разрабатывающие импортированные xaps (если проект будет запущен), принадлежат другой компании, я хотел бы свести к минимуму изменения в способе разработки своих приложений.

Ответы [ 2 ]

0 голосов
/ 09 марта 2010

Мне удалось найти решение, которым я вполне доволен.

Вместо того, чтобы создавать файлы .xml как «содержимое» для добавления в xap, я построил их как «ресурс», затем использовал Application.ResourceStream () и загрузил xml, используя поток.

Это означает, что вторым разработчикам xap придется изменить способ их работы, но это всего лишь одна дополнительная строка кода и изменение действия сборки, я уверен, что они справятся.

0 голосов
/ 09 марта 2010

Я полагаю, вы используете DeploymentCatalog для загрузки второго xap?К сожалению, нет никакого способа получить доступ к ресурсам, включенным в этот xap.Вы можете встроить ресурсы в сборки, включенные в xap, а затем изменить способ их загрузки.

Если вы действительно не хотите изменять структуру вторичного xap, вы можетевозможность написать свой собственный DeploymentCatalog, который также позволит вам загружать ресурсы из загруженного xap.Исходный код DeploymentCatalog доступен, так что вы можете основывать его на этом.

...