Delen via


MSBuild primer voor WDK-ontwikkelaars

In deze sectie worden enkele eenvoudige MSBuild-terminologie geïntroduceerd voor WDK-ontwikkelaars, die bekend zijn met Build.exe en NMake.exe. In deze sectie ziet u de bouw van eenvoudige MSBuild-projecten.

Nmake-concepten die relevant zijn voor MSBuild

Als u met Build.exe en eerdere versies van de WDK (vóór WDK 8) hebt gewerkt, bent u waarschijnlijk bekend met de terminologie en concepten die NMake.exe gebruikt.

  • command - roept een opdrachtregelprogramma aan.
  • target : beschrijft een benoemde reeks opdrachten.
  • afhankelijkheid : beschrijft een doel dat afhankelijk is van andere doelen.
  • Nmake wordt aangeroepen op een make-bestand met een of meer doelen die zijn opgegeven. Vervolgens worden alle afhankelijkheden recursief uitgevoerd en vervolgens de opdrachten van het doel.
  • Nmake-bestanden kunnen andere make-bestanden bevatten voor het robuuste beheer van de buildstructuur.
  • Nmake biedt ook ondersteuning voor het maken van benoemde variabelen die worden vervangen door parameters van opdrachten.
  • Nmake ondersteunt ook automatische variabelen die worden toegewezen door de Make.exe zelf, bijvoorbeeld de naam van de huidige map of het huidige pad.
  • Een target wordt nooit tweemaal uitgevoerd tijdens één build. Na uitvoering wordt ervan uitgegaan dat een doel zijn werk heeft voltooid en niet opnieuw wordt uitgevoerd, zelfs als een volgend doel in de build ervan afhankelijk is.

MSBuild-concepten

  • De belangrijkste MSBuild-bestandsextensie voor C++-projecten is .vcxproj.

  • Opdrachten worden nu taken genoemd en ze zijn niet alleen aanroepen van opdrachtregelprocessen. In plaats daarvan zijn taken eenheden van uitvoerbare code die MSBuild kan gebruiken om atomische buildbewerkingen uit te voeren. Zie MSBuild-taken die specifiek zijn voor Visual C++ voor een volledige lijst met taken.

  • MSBuild importeert de taken uit hun CLR-assembly's (Common Language Runtime) met het UsingTask-element , zoals in het volgende voorbeeld wordt weergegeven.

    <UsingTask TaskName="TaskName" AssemblyName="AssemblyName" />
    
  • Doelen groeperen taken in een bepaalde volgorde en het buildproces kunnen worden onderverdeeld in kleinere eenheden.

  • Met een PropertyGroup kunnen eigenschappen worden gedefinieerd met behulp van een mensvriendelijke indeling. In het volgende voorbeeld ziet u de PropertyGroup-indeling .

    <PropertyGroup>
      <ProductVersion>9.0.30729</ProductVersion>
    </PropertyGroup>
    
  • Een item is een objectgeoriënteerde variant van Eigenschap. Hoewel de eigenschapsindeling naam/waarde is, is de itemindeling naam/object waarbij het object meerdere kenmerken heeft. Items zijn matrices van objecten.

  • Eigenschappen worden aangeduid met de notatie $(project), terwijl items worden aangeduid met de notatie @(name).

  • Een ItemGroup is een verzameling items.

  • Een ItemGroups is meestal een lijst met alle bestanden die moeten worden gecompileerd. De verzameling bestanden wordt vervolgens doorgegeven aan een taak met behulp van de notatie @(itemname). Zie MSBuild-items voor meer informatie over het gebruik van Items.

  • MSBuild heeft een aantal ingebouwde eigenschappen waarnaar u ook kunt verwijzen in een projectbestand.

  • Zie MSBuild Concepts en MSBuild Reference voor meer informatie over MSBuild- en buildtaken.