Best.NET narzędzie do budowania [duplikat]

Możliwy duplikat:
NAnt czy MSBuild, który wybrać i kiedy?

Jakie jest najlepsze narzędzie do budowania . Net ?

Obecnie używam NAnt ale tylko dlatego, że mam doświadczenie z Ant . Czy MSBuild jest preferowany?

Author: Community, 2008-08-19

14 answers

W rzeczywistości używamy kombinacji NAnt i MSBuild z CruiseControl . NAnt służy do sterowania przepływem skryptów i wywołuje MSBuild do kompilacji projektów. Po uruchomieniu fizycznej kompilacji, NAnt jest używany do publikowania pojedynczych wyników budowania projektu do współdzielonej lokalizacji.

Nie jestem pewien, czy to jest najlepszy proces. Myślę, że wielu z nas nadal szuka świetnego narzędzia do budowania. Jedna obiecująca rzecz, którą słyszałem ostatnio na. Net Rocks, odcinek 362, to James Kovac ' s PSake , System budowania oparty całkowicie na PowerShell. To brzmi naprawdę obiecująco, ponieważ to, co można zrobić z PowerShell jest dość nieograniczone w teorii.

 28
Author: Peter Meyer,
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
2013-08-31 10:03:05

Chciałbym wrzucić FinalBuilder do miksu. To nie jest darmowe, ale jeśli masz dość edycji XML plików i chcesz nieco ładniejsze (IMO ) środowisko do pracy w ja dałbym go spróbować.

Pracowałem z nimi wszystkimi i zawsze wracałem do FinalBuilder.

 17
Author: Jamie,
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
2013-08-31 10:11:04

Jest jeszcze jedno nowe narzędzie do budowania (bardzo inteligentne opakowanie) o nazwie NUBuild. Jest lekki, open source i niezwykle łatwy w konfiguracji i zapewnia niemal bezdotykową konserwację. Bardzo podoba mi się to nowe narzędzie i uczyniliśmy je standardowym narzędziem do ciągłego budowania i integracji naszych projektów (mamy około 400 projektów w 75 deweloperach). Spróbuj.

Http://nubuild.codeplex.com/

  • łatwy w użyciu wiersz poleceń interfejs
  • możliwość kierowania wszystkich . Net Framework wersje, czyli 1.1, 2.0, 3.0 i 3.5
  • obsługuje konfigurację opartą na XML
  • obsługuje zarówno projekt, jak i plik referencje
  • automatycznie generuje " kompletny uporządkowanej listy budowy" dla danego projekt - Brak konserwacji dotykowej.
  • możliwość wykrywania i wyświetlania zależności kołowe
  • wykonaj równoległe budowanie - automatycznie decyduje, który z projekty z Wygenerowanej listy build może być zbudowany niezależnie.
  • możliwość obsługi zestawów proxy
  • zapewnia wizualną wskazówkę do budowy proces, na przykład pokazujący " % zakończone", "aktualny status" itp.
  • generuje szczegółowy dziennik wykonania zarówno w formacie XML i tekstowym
  • Łatwa integracja z CruiseControl.NET ciągły system integracyjny
  • może używać niestandardowego loggera jak XMLLogger przy targetowaniu wersji 2.0 +
  • możliwość analizy logów błędów
  • możliwość wdrożenia wbudowanego Zespoły do user specified location
  • możliwość synchronizacji kodu źródłowego z systemem kontroli źródła
  • możliwość zarządzania wersjami
 8
Author: netbuild,
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
2013-08-31 10:16:13

Używam MSBuild całkowicie do budowania. Oto mój ogólny skrypt MSBuild, który przeszukuje drzewo .pliki csproj i buduje je:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
  <UsingTask AssemblyFile="$(MSBuildProjectDirectory)\bin\xUnit\xunitext.runner.msbuild.dll" TaskName="XunitExt.Runner.MSBuild.xunit"/>
  <PropertyGroup>
    <Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
    <DeployDir>$(MSBuildProjectDirectory)\Build\$(Configuration)</DeployDir>
    <ProjectMask>$(MSBuildProjectDirectory)\**\*.csproj</ProjectMask>
    <ProjectExcludeMask></ProjectExcludeMask>
    <TestAssembliesIncludeMask>$(DeployDir)\*.Test.dll</TestAssembliesIncludeMask>
  </PropertyGroup>

  <ItemGroup>
    <ProjectFiles Include="$(ProjectMask)" Exclude="$(ProjectExcludeMask)"/>
  </ItemGroup>

  <Target Name="Build" DependsOnTargets="__Compile;__Deploy;__Test"/>

  <Target Name="Clean">
    <MSBuild Projects="@(ProjectFiles)" Targets="Clean"/>
    <RemoveDir Directories="$(DeployDir)"/>
  </Target>

  <Target Name="Rebuild" DependsOnTargets="Clean;Build"/>

  <!--
  ===== Targets that are meant for use only by MSBuild =====
  -->
  <Target Name="__Compile">
    <MSBuild Projects="@(ProjectFiles)" Targets="Build">
      <Output TaskParameter="TargetOutputs" ItemName="AssembliesBuilt"/>
    </MSBuild>
    <CreateItem Include="@(AssembliesBuilt -> '%(RootDir)%(Directory)*')">
      <Output TaskParameter="Include" ItemName="DeployFiles"/>
    </CreateItem>
  </Target>

  <Target Name="__Deploy">
    <MakeDir Directories="$(DeployDir)"/>
    <Copy SourceFiles="@(DeployFiles)" DestinationFolder="$(DeployDir)"/>
    <CreateItem Include="$(TestAssembliesIncludeMask)">
      <Output TaskParameter="Include" ItemName="TestAssemblies"/>
    </CreateItem>
  </Target>

  <Target Name="__Test">
    <xunit Assembly="@(TestAssemblies)"/>
  </Target>
</Project>

(przepraszam, jeśli jest trochę gęsty. Markdown zdaje się usuwać puste linie.)

Jest to dość proste, choć gdy zrozumiesz pojęcia i wszystkie zależności są obsługiwane automatycznie. Należy zauważyć, że używamy plików projektu Visual Studio, które mają wiele logiki wbudowane w nich, ale system ten pozwala ludziom na zbuduj prawie identycznie zarówno w Visual Studio IDE lub w wierszu poleceń i nadal daje Ci elastyczność dodawania rzeczy do canonical build, takich jak testy xUnit, które widzisz w skrypcie powyżej.

The one PropertyGroup jest miejscem, gdzie odbywa się cała konfiguracja i rzeczy mogą być dostosowywane, jak wykluczenie niektórych projektów z kompilacji lub dodawanie nowych masek assembly test.

ItemGroup jest miejscem, w którym dzieje się logika, która znajduje wszystkie .pliki csproj w drzewo.

Następnie są cele, które większość osób zaznajomionych z make, nAnt lub MSBuild powinna być w stanie śledzić. Jeśli wywołasz obiekt docelowy kompilacji, wywoła on _ _ Compile, _ _ Deploy i _ _ Test. Clean target wywołuje MSBuild na wszystkich plikach projektu, aby wyczyścić swoje katalogi, a następnie globalny katalog wdrażania jest usuwany. Odbuduj połączenia czyste, a następnie zbuduj.

 7
Author: Lee,
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-08-20 01:56:06

Grabie i tuńczyk biały to doskonałe połączenie. Potęga Ruby i brak XML.

. NET Open Source 5 -. Net Automation with Rake and Albacore by Liam McLennan [Tekpub.com]

 4
Author: liammclennan,
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
2013-08-31 10:28:16

Używamy Bounce, frameworka do czystszych skryptów budowania w C#.

 3
Author: Tim Macfarlane,
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
2013-08-31 10:18:48

Używam komercyjnego oprogramowania, Automated Build Studio w celu budowania.

 2
Author: Graviton,
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-10 08:26:42

Używamy MSBuild, ponieważ zaczęliśmy od Visual Studio 2005 (teraz Visual Studio 2008), a MSBuild był już "wbudowany" w SDK - na serwerze kompilacji jest mniej konserwacji. To naprawdę Klon NAnt - oba narzędzia są nieskończenie elastyczne, ponieważ pozwalają tworzyć niestandardowe zadania budowania w kodzie, a oba mają przyzwoity zestaw zadań budowania społeczności już utworzonych.

 2
Author: Greg Hurlman,
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
2013-08-31 09:59:16

Użyłem obu i wolę NAnt . Ciężko mi powiedzieć, że jeden jest "lepszy" od drugiego.

 1
Author: Chuck,
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
2013-08-31 10:03:26

Zależy również od co budujesz. Biblioteka Zadań MSBuild SDC zawiera kilka zadań specjalnych. Na przykład dla AD, BizTalk , itd.

Jest ponad 300 zadań zawartych w Biblioteka ta zawiera zadania dla: tworzenie stron www, tworzenie Pule aplikacji, Tworzenie Użytkownicy ActiveDirectory, uruchamiający FxCop , konfigurowanie serwerów wirtualnych, tworzenie pliki zip, konfigurowanie COM + , Tworzenie akcje folderów, instalacja w GAC , Konfiguracja SQL Server , konfiguracja BizTalk 2004 i BizTalk 2006, itd.

 1
Author: Riri,
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
2013-08-31 10:05:01

Użyłem zarówno MSBuild jak i NAnt i zdecydowanie wolę MSBuild, głównie dlatego, że domyślnie wymaga znacznie mniej konfiguracji. Chociaż możesz zbyt skomplikować rzeczy i załadować MSBuild dużą ilością śmieci konfiguracyjnych, w najprostszym przypadku możesz po prostu skierować go na plik rozwiązania / projektu i zrobić to, co w większości przypadków wystarczy.

 0
Author: TheSmurf,
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-08-19 17:17:52

Używanie dynamicznego języka skryptowego, takiego jak Python, Boo, Ruby itp. tworzenie i utrzymywanie skryptów budowlanych może być dobrą alternatywą dla opartych na XML takich jak NAnt. (Wydają się być czystsze do odczytu niż XML.)

 0
Author: Ray Vega,
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-10 08:23:43

UppercuT używa NAnt do budowania i jest szalenie łatwym w użyciu frameworkiem do budowania.

Automatyczne tworzenie jest tak proste, jak (1) Nazwa rozwiązania, (2) ścieżka kontroli źródła, (3) Nazwa firmy dla większości projektów!

Http://projectuppercut.org/

Kilka dobrych wyjaśnień tutaj:

 0
Author: ferventcoder,
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
2010-06-09 18:46:22

Ogólnie rzecz biorąc, mam wrażenie, że NAnt oferuje większą elastyczność w porównaniu do MSBuild, podczas gdy (z moimi stosunkowo prostymi potrzebami) do tej pory nie miałem nic przeciwko tym ostatnim.

 0
Author: Sören Kuklau,
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
2013-08-31 09:57:16