代码之家  ›  专栏  ›  技术社区  ›  Gilad Naor

python,subprocess,devenv,为什么没有输出?

  •  6
  • Gilad Naor  · 技术社区  · 15 年前

    我用Python脚本构建了一个Visual Studio解决方案。除了我无法捕获构建输出外,所有东西都工作得很好。

    p = subprocess.Popen(['devenv', 'solution.sln', '/build'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    (out, err) = p.communicate()
    ret = p.returncode
    

    这里,两者 out err 总是空的。无论构建成功与否,都会发生这种情况,如中所示 p.returncode .

    4 回复  |  直到 15 年前
        1
  •  2
  •   Wim Coenen    15 年前

    您应该使用 msbuild.exe 相反,它被设计为向stdout和stderr提供反馈。 msbuild.exe文件 位于

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\msbuild.exe (构建VS2005解决方案) 或 C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe (构建VS2008解决方案)

    注意 MSBudioEXE 不采取 /build 类开关 devenv.exe .

        2
  •  25
  •   gman    15 年前

    将其从“devenv”更改为“devenv.com”。显灵的波本先找.exes,而shell先找.coms。切换到“devenv.com”对我很有效。

    对于增量构建,devenv比msbuild快得多。我刚做了一个最新项目的构建,这意味着什么都不应该发生。

    devenv 23秒 msbuild 55秒。

        3
  •  0
  •   nosklo    15 年前

    可能是因为你运行的软件没有写入 stdout stderr . 也许它 writes directly to the terminal/console .

    如果是这样的话,你需要一些 win32 api calls 捕捉输出。

        4
  •  -2
  •   Community CDub    8 年前

    可能您的问题与管道的缓冲区填充的问题相同。检查 this question 为了一个好的答案。

    推荐文章