2012-02-28 7 views
7

Tengo recursos de cadena incrustados en mi proyecto .NET 4.0: Strings.resx y Strings.de.resx.¿Por qué no se encuentran cultivos de resx en pruebas unitarias?

En código de producción las cadenas localizadas correctas se recuperan, depende del valor de Strings.Culture:

Strings.Culture = new Culture("de"); 
string deString = Strings.Welcome; // 'Willkommen' 
Strings.Culture = new Culture("en"); 
string enString = Strings.Welcome; // 'Welcome' 

Pero en mi código de prueba unidad (usando MSTest) las cuerdas de 'Cuerdas. de.resx 'nunca se devuelven - Solo recibo cadenas de Strings.resx, sin importar los valores de Strings.Culture o Threads.CurrentThread.CultureUICulture.

¿Alguien puede ayudar?

+0

Esto generalmente significa que los conjuntos de satélites no se despliegan. ¿Qué marco de prueba usas? Para MSTest todo parece estar implementado correctamente. Si algo no fuera así, podría usar DeploymentItemAttribute. –

+0

Estoy usando MSTest (pregunta actualizada en consecuencia). Los archivos resx tienen Build Action = 'Recurso incrustado' en el ensamblado que se está probando. ¿Cómo debo usar DeploymentItemAttribute? – GarethOwen

Respuesta

7

Ok, pude reproducir este problema. En primer lugar, intente deshabilitar la implementación. Vaya a "local.testsettings" y desmarque Implementación -> Activar implementación. Cuando esta marca está marcada, VS no parece estar implementando ensamblajes satelitales para mí. Si necesita algún elemento de despliegue, utilice DeploymentItemAttribute:

[DeploymentItem(
    @".\YourProject\bin\Debug\de\YourProject.resources.dll", @".\de\")] 

o utilizar la misma pestaña "despliegue" para seleccionar ensamblados satélite apropiadas.

+0

gracias por su ayuda - Lo intentaré – GarethOwen

Cuestiones relacionadas