C# 单元测试-绑定程序集时忽略区域性

C# 单元测试-绑定程序集时忽略区域性,c#,.net,unit-testing,mstest,C#,.net,Unit Testing,Mstest,我对C#中的单元测试非常陌生。我用VisualStudio添加了一个测试项目,但当我尝试运行测试时,它们失败了,并抱怨程序集绑定失败 因此,我启用了日志记录,并注意到测试试图从特定于区域性的目录(不存在的目录)加载我的DLL 例如,如果测试项目的DLL存在于C:\MyProject\中,它将在C:\MyProject\en GB\中查找正在测试的程序集 对en GB的唯一引用是被测程序集的程序集区域性属性。如果我将该属性的值更改为en-US,单元测试绑定器将在/en-US/中搜索DLL 我是否可

我对C#中的单元测试非常陌生。我用VisualStudio添加了一个测试项目,但当我尝试运行测试时,它们失败了,并抱怨程序集绑定失败

因此,我启用了日志记录,并注意到测试试图从特定于区域性的目录(不存在的目录)加载我的DLL

例如,如果测试项目的DLL存在于C:\MyProject\中,它将在C:\MyProject\en GB\中查找正在测试的程序集

en GB
的唯一引用是被测程序集的程序集区域性属性。如果我将该属性的值更改为
en-US
,单元测试绑定器将在
/en-US/
中搜索DLL


我是否可以指定我不想要这种行为?

从文档中

编译器使用该属性来区分主程序集和附属程序集。主程序集包含代码和非特定区域性的资源。附属程序集仅包含特定区域性的资源,如[assembly:AssemblyCultureAttribute(“de”)]中所示。将此属性放在程序集上并使用非空字符串(“”)作为区域性名称将使此程序集看起来像附属程序集,而不是包含可执行代码的主程序集。使用此属性标记传统代码库将破坏它,因为没有其他代码能够在运行时找到库的入口点


所以基本上,不要使用这个属性。你真的在测试本地化的卫星组件吗?

这听起来不像是标准行为。我假设您正在测试一个具有第三方依赖关系的程序集。我知道fluentvalidation有本地化文件夹依赖关系,如果你碰巧使用了它的话。如果是,只需将nuget包安装到测试中,就可以了。还有,什么单元测试框架?@nathangonzalez Nope-这都是我自己的代码。但输出目录是非标准的(即,它们不会与源目录混合)。当您在VS-MSTest中添加一个测试项目时,框架就是您得到的任何东西?是的,这就是MSTest。因此,当您在build文件夹中查看真正的项目程序集(而不是测试程序集)时,是否存在en-GB文件夹?@nathangonzalez不,没有。en GB的唯一引用是被测程序集的程序集区域性属性。如果我将该属性的值改为en US,单元测试绑定器将在/en US/中搜索DLL。不,我不是。真有意思,我不知道。感谢您的调查工作。:)