C# MSTest.exe(VS2012)崩溃QTAgent32.exe

C# MSTest.exe(VS2012)崩溃QTAgent32.exe,c#,visual-studio-2012,mstest,C#,Visual Studio 2012,Mstest,我正在尝试通过cmdline执行我们的测试。 我使用VS2012,但总是会出现以下错误: 当我在同一台机器上直接在VS2010中运行测试时,它们运行良好。 我无法将VS2010用于cmdline,因为我们的许可证错误(程序集查找不起作用),所以我必须使用2012。 所有Windows更新都存在 是否有人在MSTest/VS2012中遇到过类似问题 我也有同样的问题。我刚刚删除了Visual Studio 2012的更新2。 步骤: 删除Visual studio 2012的更新2(通过查看已

我正在尝试通过cmdline执行我们的测试。 我使用VS2012,但总是会出现以下错误:

当我在同一台机器上直接在VS2010中运行测试时,它们运行良好。 我无法将VS2010用于cmdline,因为我们的许可证错误(程序集查找不起作用),所以我必须使用2012。 所有Windows更新都存在


是否有人在MSTest/VS2012中遇到过类似问题

我也有同样的问题。我刚刚删除了Visual Studio 2012的更新2。 步骤:

  • 删除Visual studio 2012的更新2(通过查看已安装的更新)
  • 重启系统
  • 更改Visual Studio 2012的安装(通过卸载或更改程序->更改->修复)
  • 重启系统

如果要继续安装VS 2012 update 2、3或4,可以尝试以下解决方法:

在命令行中运行以下命令:

DEL /S %windir%\*Microsoft.VisualStudio.QualityTools.Tips.UnitTest.AssemblyResolver.ni.dll* 
DEL /S %windir%\*Microsoft.VisualStudio.QualityTools.ExecutionCommon.ni.dll* 
这是一个由微软的家伙提供

安装Visual Studio更新或Windows更新后,您需要再次运行此批处理。

我遵循了Yanhua的方法,找到了一种比删除随机文件更好的解决方法:

使用vstest.console.exe而不是mstest.exe。

注意,vstest.console.exe的参数不同。它需要一个以空格分隔的test.dll列表

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "TestProject1.dll"
以下是我的msbuild安装程序,它执行相同的操作:

<PropertyGroup>
  <MSTEST>"$(VS110COMNTOOLS)..\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"</MSTEST>
</PropertyGroup>
...
<Target Name="MyTests" >
  <ItemGroup>
    <!-- These Items should be evaluated at Target runtime -->
    <TestFiles Include="..\Tests\**\bin\$(Configuration)\*.Test.dll" />
  </ItemGroup>
  <!-- Run Tests -->
  <PropertyGroup>
    <!--TestSuccessOrNot is the property specify whether the Test is sucess or not -->
    <TestSuccessOrNot>1</TestSuccessOrNot>
  </PropertyGroup>
  <Exec Command="$(MSTEST) @(TestFiles, ' ')" >
    <Output TaskParameter="ExitCode" PropertyName="TestSuccessOrNot"/>
  </Exec>
  <Error Text="Tests Failed" Condition="$(TestSuccessOrNot) == '1'" />
</Target>

“$(VS110COMNTOOLS)…\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe”
...
1.

这是ExecutionEngineeException,CLR中的硬崩溃。通常由破坏垃圾收集堆的非托管代码引起。也许测试失败了。无论你有什么神秘的许可问题,都可能比试图解决这个崩溃要容易得多。谢谢你的提示。奇怪的是,这些测试在我今天设置的另一个构建代理上运行良好。我们的VS2010 Prof许可证不支持带有程序集发现的MSTest cmdline tets,并且我们的IT不会购买升级许可证。VS2012的更新1或2似乎会破坏.NET 3.5的测试,因此完成了完全卸载并在不更新的情况下重新安装,现在我们的测试正在重新运行。Microsoft也建议这样做