MSBuild – Ein Überblick

Visual Studio Projekte erstellt man indem man in der IDE auf “Build ..Projektname..” oder “Build Solution” klickt. So definiert der ein oder andere den Erstellungsprozess von Visual Studio, dies ist allerdings nicht die ganze Wahrheit, denn im Hintergrund verwendet Visual Studio MSBuild zum Erstellen des Projektes. So zumindest seit der Framework Version 2.0. In den .NET Framework Versionen 1.0 und 1.1 wurde hierzu noch die externe Komponente NAnt verwendet.

NAnt ist eine Portierung des aus der Java-Welt bekannten Build-Tools Ant. 

Tool%20Makers%20HammerSeit .NET Framework Version 2.0 wird MSBuild mit dem .NET Framework ausgeliefert und ist somit auf allen Rechnern verfügbar auf denen auch das .NET FX installiert ist. Die Definition was durch MSBuild ausgeführt werden soll, wird über XML-Konfigurationsdateien gesteuert. Diese Konfigurationsdateien kennt jeder .NET Entwickler bereits. – Es sind die Visual Studio Projektdateien!

 

 

 

Öffnet man eine solche .proj Datei einfach mal mit einem Editor sieht man wie die Anweisungen für MSBuild aussehen. (Listing 1)

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>9.0.30729</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{05A85777-F857-4F75-8322-871ED01AA7BD}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>MSBuildLearning</RootNamespace>
    <AssemblyName>MSBuildLearning</AssemblyName>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Xml.Linq">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Data.DataSetExtensions">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="HelloWorld.proj" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

Wie man sehen kann ist eine “einfache”  Buildkonfiguration schon etwas komplex auf den ersten Blick. :) Doch in den nächsten Posts werde ich hier nach und nach die einzelnen Bestandteile erklären und anhand von einfachen Beispielen belegen, dass jeder MSBuild beherrschen kann, wenn er denn will…

PS: Heute Abend wird Teil 1 der Artikelserie verfügbar sein, also schaut rein!

 

DotNetKicks-DE Image
Published Dienstag, 9. Februar 2010 12:26 von ThorstenHans
Abgelegt unter: , ,

Kommentare

# Twitter Trackbacks for MSBuild ??? Ein ??berblick - .NET rocks [dotnet-forum.de] on Topsy.com

Ping Antwort von  Twitter Trackbacks for                 MSBuild ??? Ein ??berblick - .NET rocks         [dotnet-forum.de]        on Topsy.com

# MSBuild Items – Die Planeten im Universum

Mittwoch, 10. Februar 2010 08:46 von .NET rocks

Im vierten Teil der MSBuild Serie möchte die MSBuild Items vorstellen, die einen weiteren zentralen Bestandteil

# MSBuild Conditions - Die Wurmlöcher des Universums

Freitag, 12. Februar 2010 23:12 von .NET rocks

Im sechsten Teil der MSBuild Serie geht es um MSBuild Conditions, es sind die Wurmlöcher des MSBuild

# MSBuild Tasks – Die Umlaufbahnen im Universum

Freitag, 12. Februar 2010 23:13 von .NET rocks

Im fünften Teil der MSBuild Serie möchte die MSBuild Tasks vorstellen, Tasks verwenden hauptsächlich

# Das MSBuild Universum

Montag, 15. Februar 2010 08:22 von .NET rocks

Eine kurze Übersicht aller Artikel der MSBuild Serie &quot;Das MSBuild Universum&quot; MSBuild – Ein

# MSBuild Targets - Die Asteroiden im MSBuild Universum nutzen

Mittwoch, 17. Februar 2010 12:24 von .NET rocks

Im achten Teil der MSBuild Serie “Das MSBuild Universum” möchte ich nochmal etwas detaillierter auf MSBuild

# MSBuild Logger - Reisen im Universum sollte man protokollieren

Donnerstag, 18. Februar 2010 16:00 von .NET rocks

Im neunten Teil der Serie “Das MSBuild Universum” möchte ich MSBuild Logger vorstellen und zeigen was

# MSBuild Batching und MSBuild Choose – Die Flugbahnen von Körpern im Universum beeinflussen

Montag, 22. Februar 2010 21:51 von .NET rocks

Im zehnten Teil der Serie “Das MSBuild Universum” werde ich sowohl die Möglichkeiten des Batchings, als

# MSBuild Hook Ups - Die Tore zum Ur-Universum

Dienstag, 23. Februar 2010 08:19 von .NET rocks

Im elften – und vorletzten – Teil der Artikelserie “Das MSBuild Universum” möchte ich die Möglichkeiten

# IronMSBuild – Direkte Verbindung zu allen Planeten des Universums

Mittwoch, 24. Februar 2010 22:51 von .NET rocks

Im zwölften – und letzten – Teil der Artikelserie “Das MSBuild Universum” möchte ich IronMSBuild vorstellen

Kommentar abgeben

(verpflichtend) 
(verpflichtend) 
(optional)
(verpflichtend)