2016-06-08 16 views
0

Ich arbeite an einer Automatisierung. Ich habe eine Batchdatei, die .net-Lösungen kompiliert. Ich möchte das automatisieren, aber ich stecke fest.Wie kompiliere ich eine .net-Lösung und bekomme die Ausgabe?

Original-Datei:

"B:\Microsoft Visual Studio 9.0\Common7\IDE\devenv" "My_Types\My_Types.sln" /build >> ..\Output\Build.txt 

ich dies mit einer geänderten Datei arbeiten kann:

Compile = New Process() 
With Compile.StartInfo 
    .UseShellExecute = False 
    .RedirectStandardOutput = True 
    .FileName = """C:\Code\Intuitive Projects\Build Test.bat""" 
End With 
bSuccess = Compile.Start() 
strOutput = Compile.StandardOutput.ReadToEnd() 
Compile.WaitForExit() 
MsgBox(strOutput) 

Modifizierte Datei

"B:\Microsoft Visual Studio 9.0\Common7\IDE\devenv" "C:\Code\Intuitive Projects\My_Types\My_Types.sln" /build 

Aber ich kann nicht den nächsten Schritt erhalten arbeiten. Es hat etwas mit den Argumenten zu tun.

+5

'msbuild foo.sln' –

+0

Verwenden Sie ... PowerShell? VB.NET? Sie haben kein Sprachtag, das Ihnen bei der Beantwortung helfen könnte. –

+0

Ich wusste nicht, dass es eine andere Möglichkeit gab, C# oder VB zu kompilieren. Die Tags hinzugefügt. – Joe

Antwort

0

Visual Studio ist kein Befehlszeilenprogramm und kann daher nicht auf die Standardausgabe ausgeben Mit/Out "LogFilename.txt" können Sie es jedoch stattdessen in eine Protokolldatei ausgeben lassen. Zum Beispiel:

"C:\Code\Intuitive Projects\My_Types\My_Types.sln" /build "Release|Any CPU" /Out C:\Temp\TempLog.txt 

Sie können die Protokolldatei öffnen und analysieren.

Das heißt, wenn Sie können, verwenden Sie MSBuild.exe anstelle von DevEnv.exe. MSBuild befindet sich in C: \ Windows \ Microsoft.NET \ Framework \ v oder die 64-Bit-Version in C: \ Windows \ Microsoft.NET \ Framework64 \ v. Die Beispiele, die es ausgibt, sagen Ihnen alles, was Sie wissen müssen:

Es gibt auf den Standardausgabe/Standardfehler aus, wie Sie erwarten. Das einzig Seltsame ist, dass MSBuild in einer der Definitionen, die Sie mit dem Argument/p senden, Klammern oder Dollarzeichen hat, auf sehr merkwürdige Weise ausflippt. In diesen Fällen sollten Sie DevEnv.exe verwenden.

Alternativ können Sie MSBuild programmatisch aufrufen, dies ist jedoch etwas komplizierter. Weitere Informationen hierzu finden Sie in Microsoft.Build.Execution.BuildManager. Oder schauen Sie sich die CodeDOM an, wenn Sie ein wirklich niedriges Level erreichen wollen.

Verwandte Themen