【问题标题】:Wrong culture string from ResourceManager.GetString来自 ResourceManager.GetString 的错误文化字符串
【发布时间】:2015-11-02 22:29:26
【问题描述】:

我在另一个具有中性文化 (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);

【问题讨论】:

标签: c# visual-studio mstest


【解决方案1】:

我通过使用 DeploymentItem 属性使其工作(正如链接到另一个问题的评论中所暗示的那样)。所以我装饰了我的测试方法(我猜也可以装饰整个测试类):

     [DeploymentItem("fi-FI/MyResources.resources.dll", "fi-FI")]

不是最优雅的解决方案。

【讨论】:

    猜你喜欢
    • 2017-09-22
    • 2012-04-27
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多