调用执行程序'executor:// mstestadapter/v1'时发生异常:未为成员解析类型

m t*_*m t 7 .net unit-testing visual-studio-2012

我变得很奇怪,好吧,我甚至不称它为"错误"本身.只是每当我告诉Visual Studio 2012"运行所有"我的单元测试时(使用MS Test),我在输出窗口中得到这个奇怪的消息:

调用执行程序'executor:// mstestadapter/v1'时发生异常:成员'ASSEMBLY'的类型未解析

事情是:我只在运行单元测试时遇到此错误,并且它不是"异常",只是测试没有运行,甚至没有启动.部署到IIS时程序运行正常,我可以手动调试单元测试并遍历它,它工作正常,所以我无法获得任何类型的详细信息.

它看起来像我的程序集,这是第三方程序集,在我的测试项目运行其测试时找不到.每当我在GAC中加载这些程序集时,它都可以正常工作.

有没有人知道可能导致这个问题的原因以及我可以做些什么来解决它,以便我的单元测试能够在没有这个'错误'的情况下运行?

这是一个WCF Web服务,通​​过他们自己的公开Web服务连接到第三方数据库,这是第三方程序集.

编辑:

根据fusion日志,单元测试运行器(VSTestConfig)正在我自己的预期中在其自己的可执行文件夹中搜索那些特定的程序集,而不是bin\debug文件夹.有没有其他人看过这个问题,即使程序集存在于bin\debug中,它也不是在那里"搜索"它们?

编辑2:

一年后......当我收到这个错误时,我正在使用的环境早已不复存在.我甚至不记得环境是如何设置的.我几乎肯定它与我使用Visual Studio设置的方式或与我的GAC的某些事情有关...谁知道.我怀疑这个问题是否会在任何程度上得到回答,但无论如何,如果有人得到这个错误并弄明白,请告诉我们!:)

Pre*_*hts 4

就我而言,这是幕后的空引用。

您应该调查他抱怨的地方使用了该类型。如果找到它,您可以通过插入以下代码行来调试它:

Debugger.Attach();
Debugger.Break();
Run Code Online (Sandbox Code Playgroud)

要修复此问题,您可以进行更好的测试设置或使用以下行跳过生成错误的代码。

var processName = Process.GetCurrentProcess().ProcessName;
if(processName == "vstest.executionengine.x86"){ /*Do something else*/  } 
Run Code Online (Sandbox Code Playgroud)

我还怀疑是[assembly: AssemblyCulture("")]因为失败的测试取决于文化,并且我假设测试运行程序在没有文化的情况下运行。