Olvasás angol nyelven

Megosztás a következőn keresztül:


MSBuild

A Microsoft Build Engine egy alkalmazások készítésére szolgáló platform. Ez a motor, más néven MSBuild, egy XML-sémát biztosít egy projektfájlhoz, amely szabályozza, hogy a buildplatform hogyan dolgozza fel és hozza létre a szoftvereket. A Visual Studio az MSBuildet használja, de az MSBuild nem függ a Visual Studiótól. Ha a msbuild.exe vagy a dotnet build parancsot futtatja a projekt- vagy megoldásfájlán, olyan környezetekben vezényelheti és hozhatja létre a termékeket, ahol nincs telepítve a Visual Studio.

A Visual Studio az MSBuild használatával tölt be és hoz létre felügyelt projekteket. A Visual Studio projektfájljai (.csproj, .vbproj, .vcxprojstb.) MSBuild XML-kódot tartalmaznak, amely a projekt IDE-ben való létrehozásakor fut. A Visual Studio-projektek importálják az összes szükséges beállítást és folyamatokat a tipikus fejlesztési munkához, de kiterjesztheti vagy módosíthatja őket a Visual Studióban vagy egy szövegszerkesztő használatával.

Ha olyan Windows rendszeren szeretné telepíteni az MSBuild-et, amely nem rendelkezik Visual Studióval, akkor keresse fel a letöltési oldalontalálható Build Tools for Visual Studio részt. Az MSBuild telepítése ezzel a módszerrel biztosítja a(z) MSBuild.exe.

A .NET Core és a .NET 5 vagy újabb verziók esetében az MSBuild-nek megfelelő másik módszer a .NET SDKtelepítése. A .NET build parancs dotnet build a .NET SDK-val érhető el macOS, Windows vagy Linux rendszeren. A .NET build parancs dotnet build egy vékony réteg a MSBuild.exe.NET Core-verzió fölött. Az MSBuildet használó .NET Core parancssori felület (CLI)segítségével olyan projekteket hozhat létre, amelyek a .NET Core-t és a .NET 5-öt vagy újabb verziót célják.

A Visual Studio 2022-től kezdve a Visual Studióban való buildeléskor az MSBuild 64 bites verziója lesz használatban.

További információ a C++-hoz készült MSBuildről: MSBuild (C++).

Az alábbi példák azt szemléltetik, hogy mikor futtathat buildeket úgy, hogy az MSBuild parancsot a parancssorból inváltja a Visual Studio IDE helyett.

  • A Visual Studio nincs telepítve.

  • Az MSBuild 64 bites verzióját szeretné használni, és a Visual Studio 2019-es vagy korábbi verzióját használja. Az MSBuild ezen verziója általában szükségtelen, de lehetővé teszi, hogy az MSBuild több memóriához férhessen hozzá.

  • Több folyamatban szeretne buildet futtatni. Az IDE használatával azonban ugyanezt az eredményt érheti el a C++ és a C# rendszerű projekteken is.

  • Módosítani szeretné a buildrendszert. Például engedélyezni szeretné a következő műveleteket:

    • Dolgozza fel a fájlokat, mielőtt elérnék a fordítóprogramot.

    • Másolja a buildkimeneteket egy másik helyre.

    • Tömörített fájlok létrehozása buildkimenetekből.

    • Végezzen utófeldolgozási lépést. Előfordulhat például, hogy egy szerelvényt másik verzióra szeretne bélyegezni.

Kódot írhat a Visual Studio IDE-ben, de futtathat buildeket az MSBuild használatával. Másik lehetőségként létrehozhat kódot az IDE-ben egy fejlesztői számítógépen, de futtathatja az MSBuild parancsot a parancssorból egy forrásadattárból integrált kód létrehozásához több fejlesztő együttműködésével.

Megjegyzés

Az Azure Pipelines használatával automatikusan lefordíthatja, tesztelheti és üzembe helyezheti az alkalmazást. A buildelési rendszer automatikusan futtathat buildeket, amikor a fejlesztők bejelentkeznek a kódba (például egy folyamatos integrációs stratégia részeként), vagy ütemezés szerint (például egy éjszakai buildellenőrzési teszt buildjeként). Az Azure Pipelines az MSBuild használatával fordítja le a kódot. További információ: Azure Pipelines.

Az MSBuild windowsos bevezető oktatóanyagát a útmutatóban találja: Az MSBuildhasználata.

Az MSBuild használata parancssorban

Az MSBuild parancssorban való futtatásához adjon át egy projektfájlt MSBuild.exe, a megfelelő parancssori beállításokkal együtt. A parancssori beállítások lehetővé teszik tulajdonságok beállítását, meghatározott célok végrehajtását és a buildelési folyamatot vezérlő egyéb beállítások beállítását. A következő parancssori szintaxist használná például a MyProj.proj fájl létrehozásához, a Configuration tulajdonságot Debugértékre állítva.

Windows Command Prompt
MSBuild.exe MyProj.proj -property:Configuration=Debug

Az MSBuild nem módosítja a viselkedését a fájlkiterjesztés alapján, de a konvenció az, hogy a fő MSBuild bemeneti fájlhoz proj végződő bővítményeket (például .csproj, .vcxprojvagy .vbproj) használjon a fő MSBuild bemeneti fájlhoz, az úgynevezett "projektfájlhoz".

További információ az MSBuild parancssori beállításairól: parancssori referencia.

Fontos

A projekt letöltése előtt határozza meg a kód megbízhatóságát.

A .NET Core és a .NET 5 vagy újabb verziók esetében általában dotnet build használatával hívja meg az MSBuildet. Nézd a(z) dotnet build. Ha csak a .NET SDK-t telepíti, és nem a Visual Studiót vagy a Visual Studio Build Tools-t, akkor az MSBuild-et csak a dotnet build-n keresztül érheti el.

A parancssori dotnet build --help a dotnet buildjellemző parancssori beállításokat sorolja fel, nem az MSBuild.exeösszes beállítását, de továbbra is használhatja az MSBuild parancssori referenciában felsorolt összes parancssori lehetőséget. A dotnet build által nem feldolgozott beállítások az MSBuildnek lesznek átadva.

Projektfájl

Az MSBuild egyszerű és bővíthető XML-alapú projektfájlformátumot használ. Az MSBuild projektfájl formátuma lehetővé teszi a fejlesztők számára, hogy leírják a létrehozandó elemeket, és azt is, hogyan kell őket különböző operációs rendszerekhez és konfigurációkhoz összeállítani. Emellett a projektfájlformátum lehetővé teszi a fejlesztők számára, hogy újrahasználható buildszabályokat hozzanak létre, amelyek külön fájlokba vannak osztva, hogy a buildek következetesen végrehajthatók legyenek a termék különböző projektjeiben.

A Visual Studio buildrendszere magában a projektfájlban tárolja a projektspecifikus logikát, és importált MSBuild XML-fájlokat használ olyan bővítményekkel, mint a .props és a .targets a standard buildlogika meghatározásához. A .props fájlok definiálják az MSBuild tulajdonságokat, és .targets fájlok határozzák meg az MSBuild-célokat. Ezek az importálások néha láthatók a Visual Studio projektfájljában, de az újabb projektekben, például a .NET Core- és a .NET 5-ös és a .NET 6-projektekben nem látja az importálásokat a projektfájlban; ehelyett egy SDK-referencia jelenik meg, amely így néz ki:

XML
<Project Sdk="Microsoft.Net.Sdk">

Ezeket SDK-stílusú projekteknek nevezzük. Amikor egy SDK-ra, például a .NET SDK-ra hivatkozik, az SDK implicit módon határozza meg a .props és .target fájlok importálását.

Az alábbi szakaszok az MSBuild projektfájlformátum néhány alapvető elemét ismertetik. Az alapszintű projektfájl létrehozásáról szóló oktatóanyagért tekintse meg útmutatót: MSBuild projektfájl létrehozása az alapoktól.

Tulajdonságok

A tulajdonságok a buildek konfigurálásához használható kulcs-érték párokat jelölik. A tulajdonságokat úgy deklarálja a rendszer, hogy létrehoz egy olyan elemet, amely a tulajdonság nevét egy PropertyGroup elem gyermekeként adja meg. Az alábbi kód például létrehoz egy BuildDir nevű tulajdonságot, amely Buildértékkel rendelkezik.

XML
<PropertyGroup>
    <BuildDir>Build</BuildDir>
</PropertyGroup>

A tulajdonság feltételes meghatározásához helyezzen el egy Condition attribútumot az elemben. A feltételes elemek tartalmát a rendszer figyelmen kívül hagyja, amíg a feltétel kiértékelése nem ad eredményt true. Az alábbi példában a Configuration tulajdonság akkor van definiálva, ha még nincs definiálva.

XML
<Configuration  Condition=" '$(Configuration)' == '' ">DefaultValue</Configuration>

A tulajdonságok a projektfájlban a $(<PropertyName>) szintaxissal hivatkozhatók. Hivatkozhat például az előző példák tulajdonságaira $(BuildDir) és $(Configuration)használatával.

További információ a tulajdonságokról: MSBuild tulajdonságok.

Elemek

Az elemek bemenetek a buildelési rendszerbe, és általában a fájlokat jelölik. Az elemek elemtípusokba vannak csoportosítva a felhasználó által definiált elemnevek alapján. Ezek az elemtípusok használhatók paraméterekként a tevékenységekhez, amelyek az egyes elemeket használják a buildelési folyamat lépéseinek végrehajtásához.

Az elemek a projektfájlban deklarálhatók úgy, hogy létrehoznak egy olyan elemet, amelynek neve egy ItemGroup elem gyermekeként szerepel. A következő kód például létrehoz egy Compilenevű elemtípust, amely két fájlt tartalmaz.

XML
<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

Az elemtípusok a projektfájlban a @(<ItemType>) szintaxissal hivatkozhatók. A példában szereplő elemtípusra például a @(Compile)használatával hivatkozhat.

Az MSBuildben az elem- és attribútumnevek megkülönböztetik a kis- és nagybetűket. A tulajdonság-, elem- és metaadatnevek azonban nem. Az alábbi példa létrehozza az elemtípust Compile, comPilevagy bármilyen más esetváltozatot, és az elemtípusnak az "one.cs;two.cs" értéket adja.

XML
<ItemGroup>
  <Compile Include="one.cs" />
  <Compile Include="two.cs" />
</ItemGroup>

Az elemek helyettesítő karakterek használatával deklarálhatók, és további metaadatokat is tartalmazhatnak a fejlettebb buildelési forgatókönyvekhez. További információ az elemekről: Elemek.

Feladatok

A feladatok végrehajtható kódegységek, amelyeket az MSBuild-projektek a buildelési műveletek végrehajtásához használnak. Előfordulhat például, hogy egy feladat bemeneti fájlokat fordít le, vagy külső eszközt futtat. A feladatok újra felhasználhatók, és különböző projektek különböző fejlesztői oszthatják meg őket.

A feladat végrehajtási logikája felügyelt kódban van megírva, és az MSBuildre van leképezve a UsingTask elem használatával. Saját feladatot írhat egy felügyelt típus megírásával, amely implementálja a ITask felületet. A tevékenységek írásáról további információt Tevékenységírásicímű témakörben talál.

Az MSBuild olyan gyakori feladatokat tartalmaz, amelyeket a követelményeknek megfelelően módosíthat. Ilyenek például a Copy, amely fájlokat másol, a MakeDir, amely könyvtárakat hoz létre, valamint a Csc, amely Visual C# forráskódfájlokat fordít. Az elérhető tevékenységek listáját a használati adatokkal együtt a Tevékenységre vonatkozó referenciacímű témakörben találja.

A rendszer egy MSBuild projektfájlban hajt végre egy tevékenységet egy olyan elem létrehozásával, amely a feladat nevét egy Cél elem gyermekeként tartalmazza. A tevékenységek általában elfogadják az elem attribútumaként átadott paramétereket. Az MSBuild tulajdonság és az elemek is használhatók paraméterekként. Az alábbi kód például meghívja a MakeDir feladatot, és átadja neki a korábbi példában deklarált BuildDir tulajdonság értékét.

XML
<Target Name="MakeBuildDirectory">
    <MakeDir  Directories="$(BuildDir)" />
</Target>

A tevékenységekről további információt Tevékenységekcímű témakörben talál.

Célok

Egy adott sorrendben csoportosítja a tevékenységeket, és a projektfájl szakaszait teszi elérhetővé belépési pontokként a buildelési folyamathoz. A célokat gyakran logikai szakaszokba csoportosítják az olvashatóság növelése és a bővítés lehetővé tétele érdekében. A buildelési lépések célokra való feltörésével meghívhatja a buildelési folyamat egy részét más célokból anélkül, hogy a kód ezen szakaszát minden célba másolta. Ha például a buildelési folyamat több belépési pontja is hivatkozásokat igényel, létrehozhat egy célhelyet, amely hivatkozásokat hoz létre, majd minden olyan belépési pontból futtathatja a célhelyet, ahol szükség van rá.

A célok deklarálása a projektfájlban a Cél elem használatával történik. A következő kód például létrehoz egy Compilenevű célt, amely meghívja a Csc feladatot, amely a korábbi példában deklarált elemlistát tartalmazza.

XML
<Target Name="Compile">
    <Csc Sources="@(Compile)" />
</Target>

Speciálisabb forgatókönyvekben a célok segítségével leírhatók a kapcsolatok egymás között, és függőségelemzést végezhetnek, így a buildelési folyamat teljes szakaszai kihagyhatók, ha a cél dátum up-to. További információ a célokról: Célok.

Build naplók

A buildelési hibákat, figyelmeztetéseket és üzeneteket naplózhatja a konzolra vagy egy másik kimeneti eszközre. További információkért lásd: Buildnaplók beszerzése az MSBuild segítségével.

Az MSBuild használata a Visual Studióban

A Visual Studio az MSBuild projektfájlformátumot használja a felügyelt projektek buildadatainak tárolására. A Visual Studio felületével hozzáadott vagy módosított projektbeállítások megjelennek a .*proj fájlban, amely minden projekthez létre van hozva. A Visual Studio az MSBuild egy üzemeltetett példányát használja felügyelt projektek létrehozásához. Ez azt jelenti, hogy egy felügyelt projekt felépíthető a Visual Studióban vagy egy parancssorban (még akkor is, ha a Visual Studio nincs telepítve), és az eredmények azonosak lesznek.

Az MSBuild Visual Studióban való használatával kapcsolatos oktatóanyagért tekintse meg útmutatót: Az MSBuildhasználata.

Többcélú célzás

A Visual Studio használatával lefordíthat egy alkalmazást, hogy a .NET-keretrendszer vagy a .NET Core bármely verzióján fusson, beleértve a .NET 5-öt és újabb verziókat is. Lefordíthat például egy alkalmazást a .NET Framework 4 32 bites platformon való futtatásához, és fordíthatja le ugyanazt az alkalmazást úgy, hogy a .NET-keretrendszer 4.8-on fusson egy 64 bites platformon. A több keretrendszerre való fordítás képességét multitargetingnek nevezik.

A multitargeting néhány előnye:

  • Olyan alkalmazásokat fejleszthet, amelyek a .NET-keretrendszer korábbi verzióit célozzák meg, például a 3.5-ös és a 4.7.2-s verziót.

  • Megcélzhat egy keretrendszerprofilt, amely egy cél keretrendszer előre definiált részhalmaza.

  • Ha megjelent egy szervizcsomag a .NET-keretrendszer aktuális verziójához, megcélzhatja azt.

  • A multitargeting garantálja, hogy egy alkalmazás csak a cél keretrendszerben és platformon elérhető funkciókat használja.

További információ: Multitargeting.

A build testreszabása

Az MSBuild számos egyéni buildelési forgatókönyvhöz nyújt támogatást. A legtöbb beépített funkció felülírható vagy bővíthető. Lásd: az összeállítás testreszabása.

Az MSBuild programozott elérése

Ha buildelési eszközt fejleszt, érdemes lehet programozott módon meghívni az MSBuild alkalmazást egy .NET-alkalmazásból. Az MSBuild API használatával egy összetett buildrendszer minden aspektusát vezérelheti. Az MSBuild egy NuGet-csomagot biztosít egy teljes API-val (a Microsoft.Build névtérrel), amelyet .NET-alkalmazásból használhat ezen célokra. Lásd: Az MSBuild APIhasználata.

Az MSBuild nyílt forráskódú

Az MSBuild egy nyílt forráskódú projekt, amely elfogadja a felhasználói hozzájárulásokat a MSBuild GitHub-adattárban.

Lásd még:

Cím Leírás
útmutató: MSBuild projektfájl létrehozása az alapoktól Bemutatja, hogyan hozhat létre egyszerű projektfájlt növekményesen, csak szövegszerkesztő használatával.
útmutató: Az MSBuild használata Bemutatja az MSBuild építőelemeit, és megmutatja, hogyan írhat, módosíthat és hibakereshet az MSBuild-projektekben, a Visual Studio IDE bezárása nélkül.
MSBuild-fogalmak Az MSBuild négy építőelemét mutatja be: tulajdonságokat, elemeket, célokat és tevékenységeket.
Elemek Az MSBuild fájlformátum mögötti általános fogalmakat és a darabok egymáshoz igazítását ismerteti.
MSBuild tulajdonságok Tulajdonságokat és tulajdonságcsoportokat vezet be. A tulajdonságok kulcs-érték párok, amelyek a buildek konfigurálásához használhatók.
Célok Bemutatja, hogyan csoportosíthatja a feladatokat egy adott sorrendben, és hogyan engedélyezheti a buildelési folyamat szakaszainak meghívását a parancssorban.
Tevékenységek Bemutatja, hogyan hozhat létre egy végrehajtható kódegységet, amelyet az MSBuild az atomi buildelési műveletek végrehajtásához használhat.
feltételek A Condition attribútum MSBuild elemben való használatát ismerteti.
Kötegelés Ismerteti, hogy az MSBuild hogyan kategorizálja az elemlistákat metaadatok alapján a feladatok és célok végrehajtásához.
Több célra irányuló Bemutatja, hogyan célozhat meg több .NET-verziót és/vagy több platformot.
Buildnaplók beszerzése Ismerteti, hogyan naplózhatja a buildelési eseményeket, üzeneteket és hibákat.
Hogyan fejleszti az MSBuild a projekteket Az MSBuildben használt belső buildelési folyamatot ismerteti
Egyéni feladat létrehozása kódgenerálási Bemutatja, hogyan hozhat létre egyéni feladatot egy példakóddal.
REST API-ügyfél létrehozása az MSBuild használatával Bemutatja, hogyan bővíthető a build a REST API-ügyféllétrehozás kezelésére egy példakóddal.
További erőforrások Az MSBuild szolgáltatással kapcsolatos további információkért felsorolja a közösség és a támogatási erőforrások listáját.

Hivatkozás

  • MSBuild hivatkozás
    Hivatkozási információkat tartalmazó témakörökre mutató hivatkozások.

  • szószedet
    Általános MSBuild-kifejezéseket határoz meg.