Hva er en CSProj-fil?
Filer med utvidelse CSPROJ representerer en C#-prosjektfil som inneholder listen over filer som er inkludert i et prosjekt sammen med referansene til systemsammenstillinger. Når et nytt prosjekt startes i Microsoft VIiual Studio, får du én .csproj-fil sammen med hovedløsningsfilen (.sln). Hvis det er mer enn én sammenstilling i et prosjekt, vil det også være like mange prosjektfiler der .sln-filen binder dem alle sammen som en del av prosjektet. Innholdet i denne filen definerer alle kravene som kreves for å bygge prosjektet, for eksempel innhold som skal inkluderes, plattformkravene, versjonsinformasjon, webserver- eller databaseserverinnstillinger og oppgavene som må utføres. Innholdet i en prosjektfil er ordnet i XML-filformat og kan åpnes i et hvilket som helst tekstredigeringsprogram for redigering og visning. Det gir også en logisk oversikt over prosjektfilene for riktig ordning.
CSPROJ-filformat
Utviklere kan lage prosjektfiler på egen hånd i tillegg til MSBuild XML Schema. Den åpne og gjennomsiktige strukturen til prosjektfiler lar apputviklere påtvinge sofistikert og finmasket kontroll over hvordan prosjektene bygges og distribueres. Innholdet i en slik prosjektfil har et veldig klart forhold seg imellom. Den følgende figuren viser nøkkelelementer og forholdet mellom disse for en slik prosjektfil.
De følgende avsnittene utdyper filformatelementene for en prosjektfil.
Project Element
Project elementet er rotelementet til hver prosjektfil. Den identifiserer XML-skjemaet for prosjektfilen og kan inkludere attributter for å spesifisere inngangspunktene for byggeprosessen.
<Project ToolsVersion#"4.0" DefaultTargets#"FullPublish"
xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
Egenskaper og betingelser
Egenskaper representerer den nødvendige informasjonen som kreves for å bygge et prosjekt. Slike egenskaper er definert i et PropertyGroup element. Disse egenskapene består av nøkkel-verdi-par der egenskapselementnavnet definerer egenskapsnøkkelen og innholdet i elementet definerer egenskapsverdien.Du kan for eksempel definere egenskaper som heter ServerName og ConnectionString for å lagre et statisk servernavn og tilkoblingsstreng.
<PropertyGroup>
<ServerName>FABRIKAM\TEST1</ServerName>
<ConnectionString>
Data Source#FABRIKAM\TESTDB;InitialCatalog#ContactManager,...
</ConnectionString>
</PropertyGroup>
Betingelser kan spesifiseres via elementer for å spesifisere kriteriene for å evaluere elementet. Dette spesifiseres av betingelsesord mens egenskapen defineres som vist nedenfor:
<PropertyGroup>
<OutputRoot Condition#" '$(OutputRoot)'##'' ">..\Publish\Out\</OutputRoot>
...
</PropertyGroup>
Når MSBuild behandler denne egenskapsdefinisjonen, sjekker den først om en $(OutputRoot) egenskapsverdi er tilgjengelig. Hvis egenskapsverdien er tom – med andre ord brukeren ikke har oppgitt en verdi for denne egenskapen – evalueres betingelsen til true og egenskapsverdien er satt til ..\Publish\Out.
Items and Item Groups
En prosjektfil definerer innganger til byggeprosessen som faktisk er forskjellige filtyper. I MSBuild-nomenklaturen er disse inngangene representert av elementelementer og er definert i et ItemGroup-element.Akkurat som Property elementer, kan du navngi et Vare element slik du vil. Du må imidlertid spesifisere et Include-attributt for å identifisere filen eller jokertegnet som varen representerer.
<ItemGroup>
<ProjectsToBuild Include#"$(SourceRoot)ContactManager-WCF.sln"/>
</ItemGroup>
Targets and Tasks
Et Task element representerer en individuell byggeinstruksjon (eller oppgave). MSBuild inkluderer en rekke forhåndsdefinerte oppgaver. For eksempel:
- Oppgaven Copy kopierer filer til en ny plassering. * Csc oppgaven starter Visual C#-kompilatoren. * Vbc oppgaven starter Visual Basic-kompilatoren.
- Exec-oppgaven kjører et spesifisert program.
- Oppgaven Message skriver en melding til en logger.
Oppgaver må alltid inneholde Target elementer. Et Target element er et sett med én eller flere oppgaver som utføres sekvensielt, og en prosjektfil kan inneholde flere mål.
<Project xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name#"LogMessage">
<Message Text#"Hello world!" />
</Target>
</Project>