2011-12-15 20 views
6

Estoy trabajando en una aplicación C# .NET y estoy realizando una localización con archivos de recursos. Tengo archivos de recursos específicos de cultura como:Despliegue de ensamblados satélite .NET en la carpeta específica

  • MyResource.resx;
  • MyResource.fr-FR.resx;
  • MyResource.ja-JP.resx;

Después de la construcción, en la carpeta raíz de la aplicación hay carpetas como fr-FR, ja-JP y así sucesivamente.

¿Es posible mover todos los archivos y carpetas de recursos de localización a la misma carpeta, por ejemplo Languages?

Actualización 1:

que resuelve esto con el código de abajo. Parece que cuando copio la aplicación en otro lugar, no puede cargar recursos. Como puedo ver, el archivo application.config también debe estar allí. Y si configuro app.config como recurso embebido, no funciona.

¿Hay alguna manera de hacerlo sin el archivo .config necesario en el mismo directorio?

Gracias

+0

Es un proyecto de libray, p. dll? – Remy

+0

No, es una aplicación de escritorio. – KristijanSharp

Respuesta

7

Por defecto los ensamblados satélite se colocan en los subdirectorios directamente debajo del archivo ejecutable. Si desea mover todos los fr-FR, ja-JP y carpetas restantes de otras culturas en la misma carpeta Languages puede hacerlo añadiendo la siguiente entrada en el archivo de configuración de la aplicación:

<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="Languages"/> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

Esto indicará que en la búsqueda de conjuntos El CLR debe buscar en las ubicaciones predeterminadas y también en el directorio o directorios especificados por el atributo privatePath del elemento probing. Puede especificar cualquier directorio que exista debajo del archivo ejecutable de la aplicación. Al especificar más de un subdirectorio, debe delimitar cada uno con un punto y coma.

+0

Gracias. Está funcionando ahora. – KristijanSharp

1

Mis archivos ResX en Propiedades están a continuación:

  • Resources.resx
  • Resources.tr-TR.resx

pongo la información de tiempo de ejecución en un archivo de configuración de la aplicación como se ha descrito anteriormente, pero ningún cambio. sigue creando una carpeta tr-TR debajo de la ruta ejecutable, no debajo de la carpeta Idiomas. ¿Qué posiblemente estoy haciendo mal aquí? Gracias

<configuration> 
... 
<runtime> 
... 
</runtime> 
</configuration> 
+0

Necesita mover la carpeta usted mismo (lo hice con un paso posterior a la compilación). La edición de su configuración solo controla cómo se buscan los ensamblados extra, no dónde se escriben. – Seanba

Cuestiones relacionadas