为什么在单元测试中找不到resx文化?

时间:2012-02-28 15:04:51

标签: c# unit-testing embedded-resource

我在.NET 4.0项目中嵌入了字符串资源:Strings.resx和Strings.de.resx。

生产代码中,检索正确的本地化字符串,具体取决于Strings.Culture的值:

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

但是在我的单元测试代码(使用MSTest)中,“Strings.de.resx”中的字符串永远不会返回 - 我只能从Strings.resx获取字符串,无论值是什么Strings.CultureThreads.CurrentThread.CultureUICulture

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:7)

好的,我能够重现这个问题。首先尝试禁用部署。转到“local.testsettings”并取消选中部署 - >启用部署。选中此标志后,VS似乎没有为我部署附属程序集。 如果确实需要某个部署项,请使用DeploymentItemAttribute:

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

或使用相同的“部署”标签选择适当的附属程序集。