Zwykle kod kompiluje się i wykonuje build bezpośrednio ze środowiska IDE, czasami jednak zachodzi potrzeba, że chcemy wykonać build poza środowiskiem IDE, np. wykorzystując skrypty linii poleceń systemu Windows. Jak można to zrobić? Są przynajmniej trzy możliwości: kompilator CSC, MSBUILD lub Visual Studio wywołane z linii poleceń.
W tym artykule pokarzę przykładowe wykorzystanie każdej z metod w oparciu o prosty przykład: aplikację typu "Hello World!", o następującym kodzie w pliku Program.cs:
using System;
namespace HelloWorld
{
class Program
{
static void Main( string[] args )
{
Console.WriteLine( "Hello World !" );
}
}
}
Solution (HelloWorld.sln) natomiast wygląda następująco:
CSC.EXE
Jest to podstawowy kompilator dla C#, czyli Microsoft (R) Visual C# 2008 Compiler. Jego bezpośrednie wykorzystanie jest możliwe aczkolwiek mało wygodne. To właśnie tego kompilatora używają inne narzędzia do kompilacji kodu. Prosty przykład wskazujący jak można wykorzystać to narzędzie do wytworzenia pliku wykonywalnego na podstawie wspomnianego solution wygląda następująco:
"%Windir%\Microsoft.NET\Framework\v3.5\csc" /out:.\HelloWorld.exe .\HelloWorld\Program.cs
MSBUILD (msbuild.exe)
MSBuild, czyli Microsoft (R) Build Engine jest bardzo wygodnym narzędziem które z wykorzystaniem linii poleceń systemu Windows pozwala na build poszczególnych projektów lub całego solution wytworzonego przy pomocy IDE jakim jest Visual Studio. Wynik działania narzędzia w czytelny sposób prezentowany jest na ekranie konsoli, a dodatkowo dzięki różnym kolorom tekstu można łatwo się zorientować, czy build przeszedł pomyślnie. Prosty przykład wskazujący jak można wykorzystać to narzędzie do wytworzenia pliku wykonywalnego na podstawie wspomnianego solution wygląda następująco:
"%Windir%\Microsoft.NET\Framework\v3.5\msbuild" .\HelloWorld.sln /t:build /p:Configuration=Release
Niestety narzędzie ma też pewne wady, a mianowicie nie wszystkie typy projektów są wspierane, np. to narzędzie nie nadaje się do zrobienia build’u projektu typu "setup".
Visual Studio z linii poleceń (devenv.exe)
Środowisko Visual Studio można również wywołać z linii poleceń (bez uruchamiania interfejsu graficznego). Tą cechę można wykorzystać właśnie do wykonania build’u, np.:
"%VS90COMNTOOLS%\..\IDE\devenv.exe" .\HelloWorld.sln /rebuild Release
Tutaj dużym pozytywem jest fakt , że wpierane są wszystkie typy projektów wspierane przez Visual Studio. Niestety są też wady, a mianowicie dużo trudniej stwierdzić, czy biuld się udał, czy coś poszło nie tak (i dlaczego?) oraz zdarza się (przynajmniej u mnie) że środowisko kończy swoje działanie w wyjątku.
Podsumowując
Na tym prostym przykładzie widać, że mamy kilka możliwości by wykonywać build’a z linii poleceń (np. przy pomocy jakiegoś skryptu). Najwygodniejszym (i polecanym) jest MSBUILD, chociaż w przypadku nie wspieranych przez niego projektów warto wspomagać się wywołaniem Visual Studio (devenv.exe) bezpośrednio z linii poleceń.