2016-05-16 2 views
5

Мой Visual Studio 2015 решение имеет следующие проекты:MissingManifestResourceException От PCL кодекса Ассамблеи Вызывается От UWP

  • .NET сборки
  • UWP сборки
  • PCL библиотеки сборки
  • .NET Test Unit
  • UWP Unit Test App

PCL as sembly содержит встроенную таблицу ресурсов строк (через файл RESX в проекте) и простой класс, который позволяет вызывающим абонентам извлекать строки из таблицы строк. PCL предназначен для совместного использования строк между сборками .NET и UWP.

Когда запущена тестовая библиотека .NET Unit, модульные тесты вызывают сборку .NET, которая получает строки из сборки PCL. Это работает так, как ожидалось.

Когда запускается тестовое приложение UWP Unit, модуль тестирует вызов узла UWP, который получает строки из сборки PCL. Это не работает со следующим сообщением об исключении:

System.Resources.MissingManifestResourceException: Не удается загрузить ресурсы для файла ресурсов [blah] в пакете [guid].

Я попытался this solution, но призыв к GetForViewIndependentUse() не удалось с COMException о том, что "ResourceMap Not Found".

Что происходит? Эта цепочка вызовов работает для тестового стека .NET. Я проверил, чтобы для Нейтрального языка установлено значение «Английский» для всех сборок. Каков наилучший способ обмена таблицей строк между сборкой .NET и сборкой UWP?

+0

«в пакете» сообщает вам, что пошло не так, ресурсы встроены в сборку, а не в пакет. Ресурсы выполняются по-разному в UWP, они скомпилированы в blob PRI и встроены в пакет. Убедительный ResourceManager для чтения из сборки, возможно, будет сложным, учитывая, что спутниковые сборки не могут работать в UWP, ни о какой реальной идее. –

ответ

5

Я имел дело с тем же «отсутствующим манифестом», которое было обнаружено в течение последних нескольких дней. Я также проверил Microsoft Blog Post и этот MVP Post относительно Xamarin. После применения предлагаемых решений я получил ту же ошибку, что и «ResourceMap Not Found».

Наконец, я решил вернуться к главному вопросу, и я тщательно проверил описание для ошибки «MissingManifestResourceException» в MSDN, и он говорит:

Исключение, которое выбрасывается, если основной узел не содержит ресурсов для нейтральной культуры, и отсутствует соответствующая спутниковая сборка.

Источник: https://msdn.microsoft.com/en-us/library/system.resources.missingmanifestresourceexception(v=vs.110).aspx

Итак, я просто пошел в PCL и установить Нейтральная культуру (язык)

  1. В обозревателе решений щелкните правой кнопкой мыши проект, а затем Нажмите Свойства.
  2. На левой панели навигации выберите Приложение и , затем нажмите Информация о сборке.
  3. В диалоговом окне «Информация о сборке» выберите язык в раскрывающемся списке «Нейтральный язык».
  4. Нажмите OK.

Источник: https://msdn.microsoft.com/en-us/library/bb385967.aspx

проблема решена!

Смежные вопросы