跑步时Visual Studio 单元测试, VSTestHost
是初始化并运行测试的过程。
A new 应用程序域被创建并且基目录应用程序域设置为单元测试"Out"包含运行测试所需的所有程序集和依赖项的目录。
测试目录名为“检测结果”并位于解决方案文件所在的同一目录中。内“检测结果”在每个测试运行的目录中,您都会找到一堆子目录。
一旦单元测试完成,执行线程将返回到默认值应用程序域为了VSTestHost
过程。恢复默认的部分流程应用程序域是在调用上下文中反序列化对象。但是,BaseDirectory 已重置回包含该目录的目录VSTestHost
可执行文件是"C:\Program Files\Microsoft Visual Studio {version}\Common7\IDE"
.
这会导致反序列化失败,因为在反序列化中找不到要反序列化的类型。VSTestHost
目录。异常内容大致如下:
单元测试适配器引发异常:未解析成员“xxx,xxx, Version=2.0.3370.22002, Culture=neutral, PublicKeyToken=null”的类型
可能的破解方法是在“C:\Program Files\Microsoft Visual Studio {version}\Common7\IDE”中创建一个名为“UnitTestAssemblies”的目录。将所有必需的程序集复制到此目录中。然后手动编辑VSTestHost
配置文件名为“VSTestHost.exe.config
" 以包含作为其探测路径的一部分创建的目录:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="PrivateAssemblies;PublicAssemblies;UnitTestAssemblies"/>
</assemblyBinding>
然后,这将强制查找在反序列化期间为任何丢失的类型创建的目录。
EDIT
由于似乎是程序集绑定问题,我建议您尝试程序集绑定日志查看器 (Fuslogvw.exe) http://msdn.microsoft.com/en-us/library/aa309346%28v=vs.71%29.aspx分析资源加载过程,所以我希望您能发现问题的神秘本质