Доступ к встроенным ресурсам из загруженных MEF XAP - PullRequest
0 голосов
/ 17 июня 2010

Простой вопрос.

Таким образом, MEF не поддерживает импорт или экспорт незакрепленных файлов (например, XML-файлов) и т. Д.

Однако он должен по крайней мере поддерживать встроенные ресурсы, верно?

В настоящее время у меня есть приложение silverlight, которое динамически загружает xaps.К каждому динамически загружаемому xaps-файлу прикреплен xml-файл, присоединенный как встроенный ресурс, доступный через метод экземпляра, который выглядит примерно так ...

public XDocument MenuStructure
    {
        get
        {
            return XDocument.Load("myFile.xml");
        }
    }

Однако после импорта это свойство завершается ошибкой с сообщением «Не удается найтифайл 'myFile.xml' в пакете xap приложения. "

Я не уверен, заключается ли проблема в том, как я получаю доступ к файлу сейчас, когда для его свойства BuildAction установлено значение EmbeddedResource.

Есть идеи?

Спасибо

Ответы [ 2 ]

1 голос
/ 18 июня 2010

Вы правы, что MEF не поддерживает загрузку ресурсов из вторично загруженных XAP. Однако вы можете использовать встроенные ресурсы (встроенные в сборку, а не в XAP), но способ доступа к нему не приведет к извлечению файла из встроенных ресурсов.

Для BuildAction EmbeddedResource вам необходимо получить поток из Assembly.GetManifestResourceStream (...) (http://msdn.microsoft.com/en-us/library/xc4235zt.aspx). Для ресурса BuildAction вам нужно будет создать правильный URI пакета (см. URI файлового пакета ресурса - Ссылочная сборка в http://msdn.microsoft.com/en-us/library/aa970069(VS.85).aspx) и перейти к Application.GetResourceStream (на самом деле я не совсем уверен, работает ли этот подход для динамически загружаемых XAP). или нет).

1 голос
/ 17 июня 2010

Хорошо, согласно http://msdn.microsoft.com/en-us/library/ms596994(VS.95).aspx Я должен был использовать Application.GetResourceStream.Теперь все отлично работает.

...