En un programa localizado que contiene un archivo XAML culturalmente neutro, algunos iconos de cultura neutral y cadenas localizadas, ¿cómo se organizan estos diferentes tipos de recursos para que puedan todo se encuentra? No importa qué arreglo intente, encuentro que uno de mis tipos de recursos es inaccesible.Conjunto principal frente a los problemas de ensamblaje de satélite cuando se obtienen recursos XAML y RESX en C# .Net
El problema que estoy teniendo es:
archivo La MainWindow.xaml siempre se basa en el conjunto de satélites en-US. Si UltimateResourceFallbackLocation se establece en MainAssembly, nunca encontrará el BAML de la ventana y recibo una excepción en la llamada InitializeComponent(). Por lo tanto, me siento obligado a establecer UltimateResourceFallbackLocation en "Satélite".
Los recursos de icono cultural neutro contenidos en el archivo Resources.resx siempre se compilan en el ensamblado EXE principal y no se pueden encontrar si UltimateResourceFallbackLocation está establecido en Satellite. Esto parece ser totalmente incompatible con los requisitos del archivo MainWindow.xaml.
Si elimino por completo UICulture y NeutralResourcesLanguage, lo que obliga a los datos XAML y RESX a integrarse en el MainAssembly, entonces las cadenas específicas de mi cultura no funcionan.
La pregunta es: ¿qué estoy haciendo mal? ¿Cómo se supone que debo construir el proyecto para que estos tres tipos de recursos sean accesibles?
Editar (solución de trabajo pero parece mal):
He conseguido que mi cultura resx neutra, Resources.resx, para construir en el conjunto del satélite mediante la duplicación por completo, cambiar el nombre de los recursos duplicados .en-US.resx y estableciendo Resources.resx para Build Action: None (para que Resources.resx solo se use para generar el archivo Resources.Designer.cs pero ya no inserte datos en el ensamblado Main EXE).
El programa ahora funciona para los tres casos (cadenas localizadas, datos no localizados de resx y datos no localizados de XAML) ya que todos mis recursos culturales neutrales están ahora en el ensamblado en-US, pero duplicando los Recursos El archivo .resx para lograr esto parece bastante tonto.
¿Es tonto? ¿Hay alguna forma más inteligente de hacer esto?
Tu respuesta fue fundamental para ayudarme a encontrar una solución a un problema similar: http://www.mathewweaver.com/2013/11/internalgetsatelliteassembly-finding.html – mweaver
Me alegro de ser de ayuda :) – chridam