A build testreszabása

Ez a cikk áttekintést nyújt a build testreszabási lehetőségeiről, és útmutatást nyújt arról, hogy mikor érdemes használni az egyes megközelítéseket. A lehetőségek összetettségi sorrendben jelennek meg, a parancssori argumentumoktól a rendszerszintű testreszabásokig.

Előfeltételek

  • Az MSBuild projektfájl-struktúrájának ismerete (.csproj.vbprojvagy hasonló)
  • Az MSBuild tulajdonságainak és céljainak alapszintű ismerete

Áttekintés

A standard buildelési folyamatot használó MSBuild-projektek (a Microsoft.Common.props és a Microsoft.Common.targets importálása) számos bővíthetőségi kampóval rendelkeznek, amelyekkel testre szabhatja a buildelési folyamatot.

Számos testre szabható buildelési műveletet tulajdonságok vezérelnek. Fontos tudni, hogyan és hol állíthat be tulajdonságértéket a kívánt hatás elérése érdekében. A tulajdonságokat beállíthatja a parancssorban (és a válaszfájlokban), a speciális fájlokban, például a Directory.Build.props fájlban, az importált fájlokban vagy a projektfájlban. Fontos tudni, hogy hol használják, állítják be vagy módosítják a tulajdonságot, valamint az importált fájlok sorrendjét, beleértve az olyan SDK-kból származó implicit importálásokat is, mint a .NET SDK.

A tulajdonságok listáját az MSBuild gyakori tulajdonságai című témakörben találja.

A testreszabási beállítások megismerés

Az alábbi testreszabási lehetőségek a növekvő összetettség és a hatás hatóköre érdekében jelennek meg. Javasoljuk, hogy használja a legkevésbé összetett testreszabási lehetőséget, amely a célnak megfelel, a lista tetejétől kezdve.

Testreszabási lehetőség Description
Argumentumok hozzáadása az MSBuild parancssorhoz Olyan globális tulajdonságokat állíthat be, amelyek hatással vannak az összes függő projekt fő projektjének felépítésére és buildjeire.
Testreszabja a buildet egyetlen projektre Adjon hozzá tulajdonságokat a .props vagy .targets fájlokhoz a build beállítások testreszabásához.
A létrehozási folyamat során létrehozott fájlok kezelése Győződjön meg arról, hogy a létrehozott fájlok megfelelően szerepelnek a buildben.
Egy vagy több projekt buildjének testreszabása Adjon hozzá tulajdonságokat a Directory.Build.props szolgáltatáshoz, vagy adjon hozzá tulajdonságokat és célokat a Directory.Build.targets fájlhoz , hogy testre szabja a buildet a mappában lévő összes projekthez. Ez a technika hasznos az SDK által beállított vagy használt tulajdonságok beállításához, valamint a testreszabások hatókörének meghatározásához, hogy azok hatással legyenek egy mappában vagy almappában lévő összes projektre.
A helyi build testreszabása Módosítsa a buildet csak a helyi gépen anélkül, hogy hatással van a megosztott forrásfájlokra.
A megoldás buildjének testreszabása Testre szabhatja a buildelési viselkedést a megoldás szintjén, az egyes projekt buildek előtt és után.
Az összes .NET-build testreszabása A build testreszabása rendszerszintű hatókörrel a .NET-buildekhez.
C++ buildek testreszabása Testre szabhatja a C++ buildet, amely egy projektre, megoldásra, mappára vagy az MSBuild egy rendszeren való telepítése által szabályozott összes buildre terjed ki.

Argumentumok hozzáadása a projekt parancssori MSBuild hívásaihoz

A parancssorban beállíthatja a globális tulajdonságokat. A globális tulajdonságok az összes projekt buildre hatással vannak, beleértve a függőségeket is. Ne feledje, hogy egy projekt létrehozása automatikusan elindít egy lehetséges buildet az összes projektfüggőséghez. Az MSBuild normál viselkedése az elavult függő projektek létrehozása. Ezek a függő projekt buildek az eredeti projekttel megegyező globális tulajdonságbeállításokkal indulnak el a parancssorból.

A forráskönyvtárban vagy felette lévő Directory.Build.rsp fájl a projekt parancssori buildjeire lesz alkalmazva. További részletekért tekintse meg az MSBuild válaszfájljait.

Válasszon a tulajdonságok hozzáadása között: .props fájl vagy .targets fájl

Az MSBuild importálási sorrendtől függ, és a tulajdonság (vagy UsingTask célkitűzés) utolsó definíciója lesz alkalmazva.

Explicit importálás használatakor bármikor importálhat egy .props vagy .targets fájlból. Íme a széles körben használt konvenció:

  • .props fájlokat az importálási sorrend korai szakaszában importálja.

  • .targets a fájlok a buildelési sorrendben késve lesznek importálva.

Ezt a konvenciót importálással <Project Sdk="SdkName"> kényszerítik ki (vagyis az Sdk.props importálása az első, a fájl teljes tartalma előtt, majd az Sdk.targets a fájl teljes tartalma után az utolsó).

Amikor eldönti, hogy hol helyezze el a tulajdonságokat, használja az alábbi általános irányelveket:

  • Sok tulajdonság esetében nem számít, hogy hol vannak definiálva, mert nincsenek felülírva, és csak végrehajtáskor olvashatók.

  • Az egyes projektekben testre szabható viselkedéshez állítsa be az alapértelmezett értékeket a fájlokban .props .

  • Kerülje a függő tulajdonságok beállítását a fájlokban .props egy esetleg testre szabott tulajdonság értékének beolvasásával, mert a testreszabás csak akkor történik meg, ha az MSBuild be nem olvassa a felhasználó projektjét.

  • Függő tulajdonságokat állíthat be a fájlokban .targets , mert egyéni projektek testreszabását is átveszik.

  • Ha a tulajdonságok módosítására van szüksége, végezze ezt el egy .targets fájlban, miután az összes felhasználó-projekt testreszabása végrehajtásra került. Legyen óvatos, ha származtatott tulajdonságokat használ; a származtatott tulajdonságokat is felül kell bírálni.

  • Elemek belefoglalása fájlokba .props (tulajdonságra kondicionált). Minden tulajdonságot minden elem előtt figyelembe kell venni, így a felhasználó-projekt tulajdonság testreszabásai fel lesznek véve, és ha importált elemeket a fájlokban .props , akkor a felhasználó projektje lehetőséget biztosít az importálás által behozott elemekre Remove vagy Update elemekre.

  • Célértékek definiálása fájlokban .targets . Ha azonban a .targets fájlt egy SDK importálja, ne feledje, hogy ez a forgatókönyv megnehezíti a cél felülbírálását, mert a felhasználó projektjének nincs helye alapértelmezés szerint felülbírálni.

  • Ha lehetséges, inkább testre szabja a tulajdonságokat a kiértékelési időpontban, mint a célon belüli tulajdonságok módosítása. Ez az útmutató megkönnyíti a projekt betöltését és annak megértését, hogy mit csinál.