c# - Visual Studio 测试、Process.Start、SQLCMD 和 Windows 命令处理器错误

标签 c# visual-studio-2012 mstest .net-4.5 sqlcmd

我正在使用 Visual Studio 2012,我正在使用 Visual Studio 的测试框架 (mstest) 开发一些集成测试。

几天前,我发现了一些关于现在 Visual Studio 2012 可以在输出目录(即 bin\Debugbin\Release)中执行测试的信息,我禁用了部署以简化很多事情。

虽然大部分事情都按预期工作,但我发现了一个大问题:一些 [ClassInitialize] 代码使用 Process 类执行一个进程,并且在禁用 部署,每当启动进程时,我都会收到此错误:

enter image description here

我的第一印象是,启动过程中可能有些地方不正确,我将相同的命令和参数复制粘贴到 CMD 中,它按预期运行。

经过一些调查,我弄清楚了为什么会这样:因为我将测试运行程序配置为作为 64 位进程启动。切换到 X86 后,例如 Process.Start("cmd") 起作用了。

但更糟糕的是 SQLCMD - 我在测试运行中启动的实际进程 - 仍然失败并出现所谓的错误。

在 Visual Studio 测试运行程序中启动任何进程时都会发生此错误。

从测试运行器启动时,SQLCMD 会发生什么情况?

最佳答案

经过多次尝试和错误,我终于解决了这个问题。

  • 现在我可以将测试作为 64 位进程运行(我认为这是主要问题,但我错了!)。
  • 我仍然可以从输出目录运行测试!

但是我必须改变什么才能让它正常工作? .runsettings文件。 只是注释掉<DataCollectionRunSettings> XML 元素...然后 SQLCMD 进程突然又开始工作了!

我真的不知道为什么注释掉那个配置元素会奏效,但重点是,因为我只想要集成测试并“按原样”运行它们,所以这个解决方案对我来说很好。

无论如何,如果有人能解释为什么注释掉 <DataCollectionRunSettings>元素产生了这种效果,我们将不胜感激。

还是谢谢你!

关于c# - Visual Studio 测试、Process.Start、SQLCMD 和 Windows 命令处理器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13451166/

相关文章:

visual-studio - 如何为Visual Studio测试项目创建启动和清除脚本?

c# - CSS 标题位置固定删除间距

c# - try-catch block

c# - 在 Visual Studio 2012 .SDF 文件中,未替换(提交)我对原始文件的更改

c++ - 在带有 msvc11 的静态类析构函数中使用 std::system_category()

c# - 如何使用 ExpectedException 属性强制执行异常消息

c# - 一些 NGit 东西阻​​止 C# 应用程序正确关闭

c# - DataGrid 复制到带有样式的剪贴板

c++ - 什么是错误 MSB4198 : "The expression "DirectoryName"cannot be evaluated"

c# - 显式调用静态构造函数