VS 11 Beta无法启动进程,因为尚未提供文件名

时间:2012-04-15 05:39:12

标签: unit-testing debugging visual-studio-2012

这是我在构建测试项目时得到的结果:

VS 11 Unit Testing Unexpected Error

有了这个,我无法运行我的测试,因为他们没有被VS发现。

请参阅窗口底部的消息"Unexpected error detected. Check the Tests Output Pane for details."。现在,如果您查看“测试输出”窗格,您将无法知道问题所在。这非常有用......:)

我知道VS 11处于测试阶段,但过去常常工作......

我已经重新启动了VS但是之后它也没有用。

有关正在发生的事情的任何想法?它会在某个地方出现错误吗?

注意:我唯一能想到的就是我之前做过的VS 2010卸载。也许它卸载了一些必要的位。打败我...

编辑1
我刚刚对VS 11 Beta Ultimate进行了修复。它要求重新启动计算机一次,我做了。然后它继续修复,但保持工作超过12小时。我刚刚杀了修理过程。

与此同时,我卸载了Visual Studio 11 Express for Web。我和VS 11 Beta Ultimate并列了这个。

疯狂,它在我做了两件事之后又开始工作了。所以我不知道是什么解决了这个问题:杀死修复过程或卸载VS 11 Express for Web。

编辑2
对于我现在的失望,我发现这是一个间歇性的事情。重新启动VS 11 Ultimate Beta后问题仍然存在。 :(

编辑3
我在Microsoft填写Connect ticket,但他们将其关闭为不可复制。

我使用VS 11 Ultimate Beta修复选项进行了第二次尝试,这次它按预期完成。为了隔离问题,我在新的解决方案中创建了一个带有默认UnitTest1.cs文件的全新测试项目,在构建之后,我得到了如上所示的相同错误屏幕。因此修复选项无法解决问题。看起来我的系统中缺少某些东西。

这是VS关于窗口的信息:

Microsoft Visual Studio 11
Version 11.0.50323.1 QRELB
Microsoft .NET Framework
Version 4.5.50131 QRELB

Installed Version: Ultimate

编辑4
我发现了一个类似的问题here,但由于我没有描述DLL,因此在我的情况下给出的解决方案不适用。

编辑5
Aseem Bansal's(微软员工)的帮助下,我终于得到了logs并看到了这个例外:

W, 2124, 19, 2012/04/19, 11:51:32.644, 53768626724, devenv.exe, Exception occured while initialization System.InvalidOperationException: Cannot start process because a file name has not been provided.
   at System.Diagnostics.Process.Start()
   at Microsoft.VisualStudio.TestPlatform.Core.Utilities.CommonUtilities.LaunchProcess(String exeFileName, String commandLineArguments, String workingDirectory, IDictionary`2 environmentVariables)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.SetupProcess(Boolean forceX86Discoverer)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.Initialize_NoLock(Boolean forceX86Discoverer)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.EnsureInitialized(Boolean forceX86Discoverer)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.EnsureInitialized_NoError(Boolean forceDiscoveryInX86Mode)

编辑6
我尝试使用mstest.exe命令行工具(使用和不使用/noisolation选项)执行测试。测试按预期运行here。所以这个问题确实存在于VS 11 Beta中。

4 个答案:

答案 0 :(得分:3)

找到相关性:

当启用NuGet自动拉取时,我在大约~15版本之后在VS 11上遇到了这个问题。 删除Packages文件夹并强制重新获取构建更改的依赖关系。

我还注意到,如果我手动清除解决方案根目录中的obj / bin文件夹,则解决方案已得到纠正。

因此,我认为这听起来好像Test Suite没有使用当前解决方案配置更新缓存的dll。 在编辑时,dll不同步,从而导致单元测试夹具无法启动。

希望这有帮助。

答案 1 :(得分:2)

Leniel,

感谢您提出此问题。

在我们讨论here时,它表明shadow copy导致问题。

请确保Microsoft.VisualStudio.TestPlatform.Core.dll已从其安装位置%VSInstallDir%\Commmon7\IDE\CommonExtensions\Microsoft\TestWindow路径加载,而不是从您当前正在观察的%appData%\assembly\dl3\等临时路径加载。这应该可以解决你的问题。

另外,我想更新一下,在最新的代码中,我们已经改进了逻辑,并且通过改进的逻辑,二进制文件的加载位置无关紧要,它只适合您。

此致

Aseem Bansal

答案 2 :(得分:1)

我有这个问题,我在@chrisortman的评论中尝试了这个建议,它解决了我的问题。

他建议删除: %appdata%\assembly\dl3

虽然我在这里找到了: %appdata%..\..\Local\dl3

我疯了。真的很生气。

答案 3 :(得分:0)

感谢Leniel和Aseem Bansal的帮助。

我有类似的问题,但这个帖子的解决方案对我没有帮助, 我的VS 2012 + silk4net未在测试资源管理器中加载测试。

在我从PC上删除Telerik Test Studio之前。但VS的扩展未删除。删除后,此扩展开始正常工作。 谁看到问题仍然存在,请查看扩展可能是其中的问题。

希望这有帮助。