Zalety korzystania z MSBuild lub NAnt w porównaniu z uruchomieniem DevEnv.exe z wiersza poleceń

Czy ktoś może wyjaśnić, jakie są korzyści z używania narzędzia takiego jak MSBuild (lub NAnt) do budowania kolekcji projektów w porównaniu z uruchomieniem DevEnv.exe z wiersza poleceń?

Kolega, z którym pracowałem w przeszłości, wyjaśnił, że (przynajmniej ze starszymi wersjami Visual Studio) przy użyciu DevEnv.exe był znacznie wolniejszy od innych technik, ale nie czytałem żadnych dowodów na to, czy to jest teraz kwestią sporną, że począwszy od 2005 roku, Visual Studio używa MSBuild pod hood.

Wiem, że jedną z zalet korzystania z MSBuild pozwala na budowanie projektów bez konieczności instalowania Visual Studio na maszynach kompilacyjnych, ale nie byłem pewien, czy istnieją inne.

Author: Alfred Myers, 2008-09-26

6 answers

Jednym z powodów jest to, że budowanie produktu jest czymś więcej niż tylko jego kompilacją. Zadania takie jak tworzenie instalacji, aktualizacja numerów wersji, tworzenie Escrow, Dystrybucja końcowych pakietów itp. może być znacznie łatwiejsze ze względu na to, co te narzędzia (i ich rozszerzenia) zapewniają.

Chociaż możesz to zrobić za pomocą zwykłych skryptów, użycie NAnt lub MSBuild daje Ci solidny framework do tego wszystkiego. Istnieje wiele wsparcia społeczności dla obu, w tym dodatkowe zadania, które można pobrać (np. projekt MSBuild Community Tasks Project ). Ponadto istnieje dla nich wsparcie w wielu produktach innych firm i produktach open source.

Jeśli jesteś po prostu zainteresowany kompilacją (a nie całym procesem budowania), jedną z zalet MSBuild jest wsparcie dla budowania z wieloma procesorami.

 16
Author: Josh Sklare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 20:47:42

Oczywistą odpowiedzią mojego zespołu jest to, że everybody nie ma zainstalowanego visual studio , w szczególności nie instalujemy Visual Studio na naszych serwerach build/CI.

 6
Author: Schneider,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-18 01:58:22

Głównym powodem użycia zewnętrznego narzędzia do budowania, takiego jak nant lub MsBuild, jest możliwość automatyzacji procesu budowania, a tym samym dostarczanie ciągłych informacji zwrotnych na temat stanu systemu. Ponadto mogą być używane do wielu rzeczy oprócz" czystej " kompilacji i to jest miejsce, w którym naprawdę zaczynasz czerpać z nich wartość, to niezwykle cenna rzecz, aby móc budować i testować aplikację za pomocą jednego polecenia.

Możesz też zacząć dodawać takie rzeczy jak zbiór metryk, pakowanie o uwolnieniu binariów i wszelkiego rodzaju fajnych rzeczy w tym stylu.

 2
Author: Torbjörn Gyllebring,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 19:35:48

Jeśli chodzi o C#, devenv.exe 2005 uruchamia kompilator in-proc, co może powodować wyjątki z pamięci dla dużych rozwiązań. Msbuild chce uruchomić csc.proces exe dla każdego projektu. Projekty, które nie kompilują się z devenv /build działają dobrze z msbuild. Mam nadzieję, że podoba Ci się ten powód.

 2
Author: GregC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-17 00:32:19

Eksperymentujemy z przełączaniem się z DevEnv na narzędzie (Visual Build Pro), które używa MsBuild pod maską i otrzymaliśmy "odniesienie wymagane do systemu assembly".Rysunek..."błąd dla projektu, który go nie potrzebuje i który dobrze buduje w Visual Studio.

 0
Author: Ian Horwill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-14 13:27:54

Mamy duży system składający się z C#, zarządzanego C++ i zwykłych starych niezarządzanych C++ assemblies / DLL. Istnieje kod C++, który zależy od zarządzanego kodu C++, który zależy od kodu C#, który zależy od zarządzanego kodu C++, który zależy od zwykłego starego kodu C++ (whew!). Kiedy kilka lat temu konfigurowaliśmy nasze zautomatyzowane środowisko kompilacji, odkryliśmy, że MSBuild.exe nie obsĹ 'ugiwaĺ' poprawnie wszystkich zaleĹźnoĹ " ci jakie posiadamy.

Współpracując z Microsoftem udało nam się rozwiązać niektóre problemy ale nie wszystkie. Jeśli dobrze pamiętam, nigdy nie udało nam się zbudować C# assemblies, które zależały od zarządzanych bibliotek DLL C++. Więc skończyło się na stworzeniu niestandardowego skryptu, który nazywał się devenv.exe z linii poleceń i działało dobrze.

Oczywiście, to było z VS2005, to może być naprawione teraz, ale skrypt nadal działa, więc nie mamy ponownie problem.

 0
Author: onedozenbagels,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-17 00:54:42