2011-03-15 9 views
6

Estoy intentando compartir un archivo de recursos (archivo .resx) de mi web (Servicio de RIA? Host de Silverlight) al cliente (Silverlight) vinculando el archivo de recursos a mi cliente. Cuando intento acceder a los recursos que utiliza el objeto ResourceManager me sale el siguiente error:¿Por qué es tan difícil compartir archivos de recursos (resx) con mi cliente de Silverlight?

System.Resources.MissingManifestResourceException was caught 
    Message=Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "PPCa.Modules.ProjectManager.Client.ViewModels.ResourceStrings.resources" was correctly embedded or linked into assembly "PPCa.Modules.ProjectManager.Client" at compile time, or that all the satellite assemblies required are loadable and fully signed. 
    StackTrace: 
     at System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName) 
     at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark) 
     at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark) 
     at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) 
     at System.Resources.ResourceManager.GetString(String name, CultureInfo culture) 
     at System.Resources.ResourceManager.GetString(String name) 
     at PPCa.Modules.ProjectManager.Web.Helpers.ResourceHelper.GetEnumText[TResource](ProjectStatus a_projectStatus) 
    InnerException: 

Editar:

cuando digo que vinculaba el archivo de recursos, quiero decir que estoy utilizando el 'Agregar Opción de enlace al agregar el archivo resx existente a mi proyecto.

+0

¿Es porque el tipo de proyecto SL usa un subconjunto del framework .NET y el tipo de proyecto de serivio RIA no? –

+0

¿qué quieres decir? – Jordan

Respuesta

2

Actualmente estoy resolviendo este problema en el momento también. He reducido el problema a espacios de nombres. Para mí, creé una aplicación empresarial de Silverlight y quería cambiar el nombre del proyecto web y cambiar su espacio de nombre. Tan pronto como hice esto, el proyecto SL se rompió.

Verificar this salir. Las notas del paso 5 explican la situación, pero actualmente estoy tratando de encontrar una forma decente para solucionar esto.

EDIT: Esto funcionó para mí: http://forums.silverlight.net/forums/p/184013/420509.aspx

+0

Gracias por la sugerencia, esto funcionó para mí también después de crear la aplicación comercial Silverlight y luego intentar cambiar los espacios de nombres. –

+2

El enlace de los foros de Silverlight está roto, lo que hace que esta respuesta sea inútil. –

0

Examine la plantilla de Silverlight Business Application (Cree un nuevo proyecto, seleccione la plantilla de Silverlight Business Application).

* .resx se logra satisfactoriamente en ese proyecto mediante la adición de elementos existentes como enlaces -> En su proyecto de Silverlight, AddExisting, seleccione su archivo * .resx, examine el botón 'Agregar', amplíelo y seleccione la opción 'Agregar como enlace'.

+0

Lo sé, ese es el patrón que estoy emulando. Esto se lleva a cabo dentro de un complemento que consiste en una biblioteca de clases de servicios de RIA que se descubre a través de MEF mediante mi aplicación principal, que es una plantilla de aplicación empresarial de Silverlight. Y estoy usando la opción 'Agregar como enlace'. Lea la pregunta. – Jordan

+0

¿La generación de código del archivo .resx está configurada como pública? (marque Propiedades) – Maciek

+0

Estoy usando PublicResXFileCodeGenerator como una herramienta personalizada, si eso es lo que está preguntando. – Jordan

0

Agregar como enlace como solución, resuelve parcialmente este problema, si pongo un archivo de recursos (agregado como enlace) en otra carpeta que no es la que creó la plantilla, recibirá este error nuevamente, tendrá poner todos tus recursos en la misma carpeta Web \ Resources si planeas usar la plantilla. Pero, ¿qué pasa si quieres vincular otros servicios con sus propios recursos (servicios Ria)? Bueno, si pruebo cualquier método hasta el día de hoy, y todavía recibo este maldito error

2

Una solución (cuestionable) fue:

  1. copia (vice enlace) los archivos resx al cliente Silverlight.
  2. agregue "PublicResXFileCodeGenerator" a la propiedad Herramienta personalizada al archivo gen designer.cs.
  3. Se abrió designer.cs y se cambió el espacio de nombres a aquél del archivo web designer.cs.
  4. Solución de compilación para encontrar/ajustar problemas de espacio de nombres de resx relacionados.

Funcionó pero cuestiono la posibilidad de tener copias separadas de los archivos de resx. Además de tener que garantizar los cambios en la web, los archivos de resx se duplican manualmente en las copias de resx del cliente Silverlight, ¿hay algún otro riesgo potencial ... o existe una solución alternativa?

Cuestiones relacionadas