2009-02-18 18 views
10

Obecnie piszę scenariusz wdrażania w msbuild, a po pobraniu kilka rozszerzeń, znalazłem się patrząc na pliku kompilacji i myślenia:Jaki jest sens MSBUILD/NANT, jeśli zamierzasz pisać kod proceduralny? Czy nie jest lepszy PowerShell?

Jaki był sens w ten sposób w MSBuild?

Ten skrypt wdrażania jest całkowicie proceduralny: stop internetową, usuń folder kopiować pliki, zmieniać uprawnienia, należy uruchomić stronę internetową, itd. Nie ma fantazyjne zależność rzeczy które zakładam jest naturalną domeną narzędzi, takich jak msbuild, a NANT ROBIĆ.

Jedynym powodem, dla którego mogę zobaczyć, że używam MSBUILD, jest to, że jest dostępny w standardzie, a jego łatwe umieszczanie rozszerzeń w SVN tworzy "tylko pracę".

Problem polega na tym, że muszę poświęcić cały ten czas na opracowanie "podstawowych rzeczy" w MSBUILD (lokalizowanie rozszerzeń, opracowywanie składni), które byłyby trywialne (chociaż bardziej szczegółowe) w Powershell lub nawet w linii poleceń .

Podsumowując: Czy zadania proceduralne są odpowiednie dla MSBUILD, czy lepiej zastosować coś w rodzaju Powershell?

Odpowiedz

8

MSBuild nie jest językiem skryptowym i nie powinny być stosowane jako takie. To prawie niefortunne, że MSBuild ma tak bogatą rozszerzalność i jest na tyle elastyczny, że można go wykorzystać do niemal wszystkiego. Użyj narzędzi najbardziej odpowiednich do zadania, jeśli zbyt dużo czasu poświęcasz na tworzenie funkcjonalności, która jest zbyt ograniczona i zbyt niska, w porównaniu do tego, co możesz stworzyć za pomocą innej technologii, powinieneś się przełączyć.

+0

źle oznaczyć to jako odpowiedź, ponieważ przy tym samym wniosku doszedłem do: użyj MSBUILD do budowania sln/proj, ale nie wpadnij w pułapkę używania rozszerzeń MSBUILD na wszystko ... w większości bezcelowe – Schneider

3

To naprawdę zależy od twojej sytuacji. Jeśli jednak to zależało ode mnie i korzystałeś z Visual Studio - powiedziałbym "tak", zostań z MSBuild na rzecz integracji.

Z drugiej strony, wybrałbym MSBUILD, ponieważ podczas gdy zadania są bardzo proceduralne, daje to elastyczność rozszerzania tego procesu kompilacji w późniejszym czasie w celu obsługi bardziej złożonych zadań.

+1

Nie używałbym czegoś takiego jak Powershell, dając mi jeszcze większą elastyczność, aby przedłużyć ten proces? – Schneider

1

msbuild zawiera .NET. Musisz dodać powershell do serwerów/użytkowników, musisz go dodać - przynajmniej przez Windows XP, serwer 2003. To może, ale nie musi być problem w twoim środowisku.

Nie sądzę, że zadania proceduralne nadają się do pisania w MSBUILD, po prostu dlatego, że im krótszy jest msbuild, tym lepiej jeśli chodzi o mnie. Mogę użyć msbuild do ich wywoływania, ale prawdopodobnie napiszę bibliotekę rozszerzeń, aby je zaimplementować.

0

Wydaje mi się, że zależy to od tego, jak przebiega proces uwalniania i wdrażania, ponieważ warto użyć rozszerzenia MSBuild lub wykonać power-shell. MSBuild pozwala flexiablity obsłużyć wszystkie kroki procesu w jednym niezależnym przepływie wykonawczym.

Jeśli zajdzie taka potrzeba, za jednym razem MSBuild zapewni kontrolę nad "Zdarzeniami" lub celami, które można przesłonić, aby spełnić Twoje wymagania.

Jeśli wymaganiem jest rozmieszczenie twoich artefaktów po kompilacji kodu, to MSBuild dobrze nadaje się do tego, ponieważ możesz użyć celu "AfterBuild", który zostanie wyzwolony podczas standardowego wykonywania programu MSBuild. Może sprawić, że twój proces będzie samowystarczalny.

Powershell nie może utworzyć Twojego kodu. Musiałby wywołać MSBuild z poziomu twojego skryptu. Dla mnie jest to kwestia samodzielnego zbudowania i rozmieszczenia, a zatem będzie lepiej zorganizowana.

MSBuild to podstawowa platforma i silnik firmy Microsoft.