Mi az a CSProj fájl?
A CSPROJ kiterjesztésű fájlok egy C# projektfájlt képviselnek, amely tartalmazza a projektben szereplő fájlok listáját a rendszerösszeállításokra való hivatkozásokkal együtt. Amikor új projektet kezdeményez a Microsoft VIiual Studio programban, egy .csproj fájlt kap a fő megoldás (.sln) fájl mellett. Ha egy projektben egynél több összeállítás van, akkor azonos számú projektfájl is lesz, ahol az .sln fájl mindegyiket összekapcsolja a projekt részeként. Ennek a fájlnak a tartalma meghatározza a projekt felépítéséhez szükséges összes követelményt, például a tartalmazandó tartalmat, a platformkövetelményeket, a verziószámítási információkat, a webszerver- vagy adatbázis-kiszolgáló beállításait és az elvégzendő feladatokat. A projektfájl tartalma XML fájlformátumban van elrendezve, és bármely szövegszerkesztőben megnyitható szerkesztésre és megtekintésre. Logikus nézetet ad a projektfájloknak a megfelelő elrendezéshez.
CSPROJ fájlformátum száma
A fejlesztők maguk is létrehozhatnak projektfájlokat az MSBuild XML séma tiszteletben tartásával. A projektfájlok nyílt és átlátható szerkezete lehetővé teszi az alkalmazásfejlesztők számára, hogy kifinomult és finoman szabályozzák a projektek felépítését és telepítését. Egy ilyen projektfájl tartalma nagyon egyértelmű kapcsolatban áll egymással. A következő ábra egy ilyen projektfájl kulcsfontosságú elemeit és ezek közötti kapcsolatot mutatja be.
A következő szakaszok a projektfájl fájlformátum-elemeit dolgozzák fel.
Projektelem
A Project elem minden projektfájl gyökéreleme. Azonosítja a projektfájl XML-sémáját, és attribútumokat is tartalmazhat az összeállítási folyamat belépési pontjainak megadásához.
<Project ToolsVersion#"4.0" DefaultTargets#"FullPublish"
xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
Tulajdonságok és feltételek
A tulajdonságok jelentik a projekt felépítéséhez szükséges információkat. Az ilyen tulajdonságokat a PropertyGroup elem határozza meg. Ezek a tulajdonságok kulcs-érték párokból állnak, ahol a tulajdonságelem neve határozza meg a tulajdonságkulcsot, és az elem tartalma határozza meg a tulajdonság értékét. Például megadhat a Kiszolgálónév és a ConnectionString nevű tulajdonságokat statikus kiszolgálónév és kapcsolati karakterlánc tárolására.
<PropertyGroup>
<ServerName>FABRIKAM\TEST1</ServerName>
<ConnectionString>
Data Source#FABRIKAM\TESTDB;InitialCatalog#ContactManager,...
</ConnectionString>
</PropertyGroup>
Elemeken keresztül a feltételek megadhatók az elem értékelési kritériumainak megadása érdekében. Ezt a Feltétel szó határozza meg, miközben az alábbiak szerint definiálja a tulajdonságot:
<PropertyGroup>
<OutputRoot Condition#" '$(OutputRoot)'##'' ">..\Publish\Out\</OutputRoot>
...
</PropertyGroup>
Amikor az MSBuild feldolgozza ezt a tulajdonságdefiníciót, először ellenőrzi, hogy elérhető-e $(OutputRoot) tulajdonságérték. Ha a tulajdonság értéke üres – más szóval a felhasználó nem adott meg értéket ehhez a tulajdonsághoz –, a feltétel kiértékelése true, a tulajdonság értéke pedig ..\Publish\Out.
Tételek és cikkcsoportok
A projektfájl az építési folyamat bemeneteit határozza meg, amelyek valójában különböző fájltípusok. Az MSBuild nómenklatúrában ezeket a bemeneteket Item elemek képviselik, és egy ItemGroup elemen belül vannak meghatározva. A Tulajdon elemekhez hasonlóan az Elem elemeket is tetszés szerint nevezheti el. Azonban meg kell adnia egy Include attribútumot az elem által képviselt fájl vagy helyettesítő karakter azonosításához.
<ItemGroup>
<ProjectsToBuild Include#"$(SourceRoot)ContactManager-WCF.sln"/>
</ItemGroup>
Célok és feladatok
A Task elem egy egyedi összeállítási utasítást (vagy feladatot) jelent. Az MSBuild számos előre meghatározott feladatot tartalmaz. Például:
- A Másolás feladat a fájlokat új helyre másolja.
- A Csc feladat meghívja a Visual C# fordítót.
- A Vbc feladat meghívja a Visual Basic fordítót.
- Az Exec feladat egy megadott programot futtat.
- Az Üzenet feladat üzenetet ír egy naplózónak.
A feladatoknak mindig a Target elemekben kell szerepelniük. A Target elem egy vagy több feladat halmaza, amelyek egymás után kerülnek végrehajtásra, és egy projektfájl több célt is tartalmazhat.
<Project xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name#"LogMessage">
<Message Text#"Hello world!" />
</Target>
</Project>