7

我正在尝试从 Visual Studio 内部与 xUnit.Net 进行穷人集成作为构建后事件。

我想要的是当我按 Shift+F6(构建测试项目)时,在成功构建后它应该运行 xUnit.Console.exe 并将结果输出到 html 文件中,然后在浏览器中启动 html 文件。

以下是我到目前为止得到的,它可以工作,但不是我喜欢的(因为浏览器将显示为某种模式对话框,我无法在 Visual Studio 和浏览器。现在我必须关闭浏览器才能让 VS 重新获得焦点,这很糟糕。

下面是我的 Post Build 事件:

"$(SolutionDir)\Components\xUnit.net\xunit.console.exe" "$(TargetPath)" /html "$(TargetDir)result.htm"
"$(TargetDir)result.htm"

关于如何获得它的任何想法,以便 result.htm 显示在浏览器内而不是模式模式下?

经过进一步测试,似乎执行的任何 shell / 命令都以模态模式运行。例如,我尝试使用简单的 cmd.exe 来弹出命令 shell。

我尝试使用 start C:\Windows\IE7\iexplore.exe "$(TargetDir)result.htm" 但这也不起作用......

4

2 回答 2

9

这可能有点迂回,但使用 Windows power-shell 启动该过程似乎有效。我将构建后事件设置为如下所示:

powershell start-process <actual-command-line-to-run>

在这种情况下,Visual Studio 会立即重新获得控制权,而无需等待启动的进程完成。

于 2009-12-21T09:13:02.567 回答
0

由于我使用的路径中有空格,我在使用 powershell 方法时遇到了一些问题,相反,我决定使用这样的 vbscript 构建后事件

Tests.vbs """$(DevEnvDir)mstest.exe"""

然后像这样 vbscript 启动命令 async

'args
mstest = WScript.Arguments(0)     'mstest path
Set WshShell = WScript.CreateObject("WScript.Shell")   'Create Windows Shell Object
WshShell.Run "Tests.bat """ & mstest & """", 0, false   'Run Async
Set WshShell = Nothing
于 2017-06-26T14:17:52.043 回答