2012-03-07 17 views
24

zastanawiałem się: jaka jest różnica między używaniem msbuild i devenv podczas kompilacji rozwiązania z linii poleceń?MSBuild vs devenv dla linii poleceń buduje

Jedną oczywistą rzeczą było to, że zauważyłem msbuild ma budować projekty zależne nie zawartych w roztworze, natomiast devenv nie.

Czy jest jakiś inny? Czy są jakieś specjalne flagi, które można przekazać do msbuild, aby dokładnie pasowały do ​​wersji devenv?

P.S. Używam Visual Studio 2010 SP1

+1

Po wszystkim devenv dzwoni do msbuild, aby wykonać kompilację! –

Odpowiedz

9

Według tego MSDN Blog Entry starają się zminimalizować różnice, ale te, które istnieją (tj wykorzystaniem zintegrowanego C# kompilator zamiast csc.exe lub ustawienie właściwości BuildingInsideVisualStudio) są głównie wykonywane w celu optymalizacji wydajności kompilacji.

4

doznałem projekt wewnątrz wielowarstwowej drużyny: wdrożeniowców, testerów deployers. MSBuild był głównym narzędziem dla wdrażających: mogli kompilować i rekompilować, po prostu ustawiając parametry budynku edytując plik konfiguracyjny xml MSBuild bez otwierania devenv. W rzeczywistości często używali MSBuilda w środowisku pre-prod, gdzie w ogóle nie było devenv.

Nant jest podobnym narzędziem przez Apache Foundation.

W celu uzyskania dalszych informacji zajrzyj tutaj:

20

Główną zaletą MSBuild jest to, że nie trzeba mieć zainstalowany program Visual Studio.

Ograniczeniem MSBuild jest to, że nie wspiera budowanie projektów (.vdproj) Visual Studio konfiguracji.

(Można to obejść przez defining an exec task which calls devenv, ale potem trzeba jeszcze Visual Studio).

4

Inną ważną różnicą jest to, że msbuild ma kilka opcji, które nie istnieją dla devenv. O ile mi wiadomo, nie ma sposobu, aby zwiększyć szczegółowość dla devenv ale można zwiększyć szczegółowość dla msbuild przez opcję:

/v:diag 
1

natknąłem się na przypadek, w którym devenv napisał komunikat o błędzie, gdy plik projektu było brakuje, ale mimo to zwróciło 0. Natomiast msbuild zwrócił wartość niezerową. Przełączyłem nasz plik Makefile na używanie msbuild, abyśmy nie przeoczyli błędów.

Powiązane problemy