【问题标题】:Visual Studio test, Process.Start, SQLCMD and Windows Command Processor errorVisual Studio 测试、Process.Start、SQLCMD 和 Windows 命令处理器错误
【发布时间】:2012-11-19 09:44:28
【问题描述】:

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

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

尽管大多数事情都按预期工作,但我发现了一个大问题:一些[ClassInitialize] 代码使用Process 类执行一个进程,并且在禁用部署 之后,每当启动一个进程时,我得到这个错误:

我的第一印象是,启动过程中的某些东西可能不正确,我将相同的命令和参数复制粘贴到 CMD 中,它按预期工作。

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    但是我必须进行哪些更改才能使其正常工作? .runsettings 文件。 它只是在注释掉<DataCollectionRunSettings> XML 元素...突然 SQLCMD 进程又开始工作了!

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

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

    还是谢谢你!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2013-07-03
      • 1970-01-01
      相关资源
      最近更新 更多