我需要以编程方式编译解决方案。我不能直接给出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()"。
我无法理解问题的原因。不确定这是否是确保编译结束的正确方法。
非常感谢任何帮助。
答案 0 :(得分:1)
我无法说明您的具体问题,但提出了一些建议:
.bat
文本文件并启动它。Microsoft.Build.Utilities.ToolLocationHelper
获取任何路径。Microsoft.Build.Execution.BuildManager
以编程方式构建 。