从ResourceManager.GetString返回错误的区域性字符串

本文关键字:区域性 字符串 错误 返回 ResourceManager GetString | 更新日期: 2023-09-27 18:18:50

我在另一个具有中性区域性(DataSource.resx)和特定区域性(DataSource.fi-FI.resx)的程序集中有一个简单的单元测试和一个资源文件。

单元测试只是测试我用正确的语言得到正确的字符串。如果我从Visual Studio中运行单元测试,则可以正常工作。但是如果我用mstest从命令行运行它就会失败——它会获得默认的区域性字符串,而不是我告诉它使用的字符串。

甚至将区域性作为参数提供给ResourceManager。GetString给出相同的结果。

我猜这与翻译在另一个程序集中有关,但不确定。什么好主意吗?谢谢!:)

单元测试:

var cu = System.Globalization.CultureInfo.GetCultureInfo("fi-FI");
System.Threading.Thread.CurrentThread.CurrentUICulture = cu;
var trans1 = MyResources.Api.DataSource.Source_scrape;
Trace.WriteLine(trans1);
var res = MyResources.Api.DataSource.ResourceManager.GetString("Source_scrape", cu);
Trace.WriteLine(res);

从ResourceManager.GetString返回错误的区域性字符串

我通过使用DeploymentItem属性(正如链接到另一个问题的评论所暗示的那样)使其工作。所以我用:

来装饰我的测试方法(我猜也可以装饰整个测试类)
     [DeploymentItem("fi-FI/MyResources.resources.dll", "fi-FI")]

不是最优雅的解决方案。