以编程方式编译visual studio解决方案

时间:2014-07-25 14:11:35

标签: msbuild visual-studio-2013

我需要以编程方式编译解决方案。我不能直接给出MSBuild的路径,因为它在2013和早期版本之间有所不同。

我在下面分享我的代码 -

Using exeprocess As New System.Diagnostics.Process
        exeprocess.StartInfo.FileName = "cmd"
        exeprocess.StartInfo.CreateNoWindow = True
        exeprocess.StartInfo.UseShellExecute = False
        exeprocess.StartInfo.RedirectStandardInput = True
        exeprocess.StartInfo.RedirectStandardOutput = True
        exeprocess.Start()
        Dim sw As StreamWriter = exeprocess.StandardInput
        Dim sr As StreamReader = exeprocess.StandardOutput
        sw.WriteLine("PUSHD C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\")
        sw.WriteLine("call vcvarsall.bat")
        sw.WriteLine("@MSBuild /t:Rebuild" & " /flp1:logfile=" & """" & logFilePath & """;errorsonly" & " " & """" & solutionPath & """")

        sr.ReadLine()
        While Not sr.EndOfStream()
            sr.ReadLine()
        End While

End Using

我的要求是等到编译结束。

问题是它挂在第34行;而不是sr.EndOfStream()"。

我无法理解问题的原因。不确定这是否是确保编译结束的正确方法。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我无法说明您的具体问题,但提出了一些建议:

  1. 不要写入输入流,只需生成一个简单的.bat文本文件并启动它。
  2. 您可以使用Microsoft.Build.Utilities.ToolLocationHelper获取任何路径。
  3. 您可以使用Microsoft.Build.Execution.BuildManager以编程方式构建