Pregunta MissingManifestResourceException del código de ensamblaje PCL llamado de UWP


Mi solución Visual Studio 2015 tiene los siguientes proyectos:

  • .NET assembly
  • Montaje UWP
  • Montaje de PCL
  • Biblioteca de pruebas de unidad .NET
  • UWP Unit Test App

El ensamblaje PCL contiene una tabla de recursos de cadena incrustada (a través de un archivo RESX en el proyecto) y una clase simple que permite a las personas que llaman obtener cadenas fuera de la tabla de recursos de cadena. El PCL está diseñado para permitir el intercambio de cadenas entre los ensamblados .NET y UWP.

Cuando se ejecuta la biblioteca de pruebas de unidad .NET, las pruebas de unidad llaman al ensamblado .NET, que elimina las cadenas del ensamblaje PCL. Esto funciona como se esperaba.

Cuando se ejecuta la aplicación de prueba de unidad UWP, las pruebas de unidad llaman al conjunto UWP, lo que hace que las cadenas salgan del conjunto PCL. Esto falla con el siguiente mensaje de excepción:

System.Resources.MissingManifestResourceException: No se pueden cargar recursos para el archivo de recursos [blah] en el paquete [guid].

Lo intenté esta solución, pero la llamada a GetForViewIndependentUse() falló con un COMException indicando que "ResourceMap no encontrado".

¿Que esta pasando? Esta cadena de llamadas funciona para la pila de prueba de unidad .NET. He comprobado para asegurarme de que el Idioma Neutral esté configurado en "Inglés" para todos los ensamblajes. ¿Cuál es la mejor manera de compartir una tabla de cadenas entre el ensamblado .NET y el ensamblado UWP?


5
2018-05-16 16:28


origen


Respuestas:


Estuve tratando con la misma "MissingManifestResourceException" durante los últimos días. También revisé el Publicación en el blog de Microsoft y esto MVP Post con respecto a Xamarin. Después de aplicar las soluciones propuestas, recibí el mismo error que usted "ResourceMap No encontrado".

Finalmente, decidí volver al problema principal y revisé cuidadosamente la descripción del error "MissingManifestResourceException" en MSDN, y dice:

La excepción que se lanza si el El montaje principal no contiene los recursos para la cultura neutral., y falta un conjunto de satélite apropiado.

Fuente: https://msdn.microsoft.com/en-us/library/system.resources.missingmanifestresourceexception(v=vs.110).aspx

Entonces, solo fui a PCL y establecí un Cultura Neutral (Idioma)

  1. En el Explorador de soluciones, haga clic con el botón derecho en su proyecto y luego haga clic en   Propiedades
  2. En la barra de navegación izquierda, seleccione Aplicación, y   luego haga clic en Información de ensamblaje.
  3. En el cuadro de diálogo Información de la Asamblea.   cuadro, seleccione el idioma en la lista desplegable Idioma neutral.
  4. Haga clic en Aceptar.

Fuente: https://msdn.microsoft.com/en-us/library/bb385967.aspx

¡Problema resuelto!


6
2017-08-30 00:45