2010-08-11 11 views
5

me he encontrado con un comportamiento extraño en Visual Studio 2010.Recurso incrustado falta en Visual Studio 2010 cuando el nombre termina con "No.xxx"

Al utilizar recursos incrustados (archivos que se añaden al proyecto de C# y para el cual la propiedad Build Action se establece en Embedded Resource), los archivos se incluyen en el ensamblaje de salida como datos binarios. Una lista de los recursos es sencillo:

class Program 
{ 
    static void Main(string[] args) 
    { 
     string[] names = typeof (Program).Assembly.GetManifestResourceNames(); 

     foreach (var name in names) 
     { 
      System.Console.Out.WriteLine (name); 
     } 
    } 
} 

Sin embargo, si el nombre del archivo de recursos incrustado termina con No.xxx (la extensión es irrelevante), el archivo no aparece en la lista. No puedo encontrar ninguna razón por la cual Visual Studio 2010 no incluiría dicho archivo. ¿Qué me perdí?

Nota: si cambio el nombre del archivo de recursos incrustados en el explorador de soluciones a otra cosa, todo funciona como se esperaba.

+0

Finalmente publiqué esto en Microsoft Connect como un error (17 de agosto de 2010). –

Respuesta

6

Dan de la equipo Microsoft Connect finalmente ha proporcionado una valid explanation para este comportamiento:

Hola, gracias por el informe, esto es en realidad trabajando normalmente. La razón es que cualquier archivo resx cuyos nombres coincidan con el patrón .VALIDCULTURE.resx se supone que es específico de esa cultura. (Así es como ha funcionado desde VS2002, para bien o para mal) En su caso, "no" es una cultura válida (noruega, supongo) por lo que el proceso de compilación la convierte en un conjunto satélite. Esto es lo que obtuve cuando intenté esto. Tenga en cuenta la subcarpeta "no". Si en su aplicación cambia su cultura actual a noruega, la carga de recursos cargará este conjunto de recursos.

Así que el problema no tiene nada que ver con la palabra No en sí, sino más bien con el hecho de que se trata de una, de dos letras, el nombre de la cultura válida (en mi caso noruego). Revisé, y de hecho, había una subcarpeta en bin\Debug llamada No, que contenía un ensamblaje satélite llamado Project.resources.dll en él.

Renombrar el recurso para que finalice con .EN.xxx o .FR.xxx, por supuesto, muestra el mismo comportamiento.

+0

¡Guau, puedes encontrar cualquier cosa en StackOverflow! Tuve el mismo problema con un archivo ii.tif no incrustado. –

Cuestiones relacionadas