Co je soubor CSProj?
Soubory s příponou CSPROJ představují soubor projektu C#, který obsahuje seznam souborů zahrnutých v projektu spolu s odkazy na systémová sestavení. Když je v Microsoft VIiual Studio zahájen nový projekt, získáte jeden soubor .csproj spolu s hlavním souborem řešení (.sln). Pokud je v projektu více než jedno sestavení, bude stejný počet souborů projektu i tam, kde je soubor .sln spojí všechny dohromady jako součást projektu. Obsah tohoto souboru definuje všechny požadavky, které jsou vyžadovány k sestavení projektu, jako je obsah, který má být zahrnut, požadavky platfrom, informace o verzích, nastavení webového serveru nebo databázového serveru a úlohy, které je třeba provést. Obsah souboru projektu je uspořádán ve formátu souboru XML a lze jej otevřít v libovolném textovém editoru pro úpravy i prohlížení. Poskytuje také logický pohled na soubory projektu pro správné uspořádání.
Formát souboru CSPROJ č.
Vývojáři mohou sami vytvářet soubory projektu a respektovat Schéma XML MSBuild. Otevřená a transparentní struktura projektových souborů umožňuje vývojářům aplikací zavést sofistikovanou a jemnou kontrolu nad tím, jak jsou projekty sestavovány a nasazovány. Obsah takového souboru projektu má mezi sebou velmi jasný vztah. Následující obrázek ukazuje klíčové prvky a vztah mezi nimi pro takový soubor projektu.
Následující části vysvětlují prvky formátu souboru pro soubor projektu.
Prvek projektu
Element Project je kořenovým prvkem každého souboru projektu. Identifikuje schéma XML pro soubor projektu a může obsahovat atributy pro určení vstupních bodů pro proces sestavení.
<Project ToolsVersion#"4.0" DefaultTargets#"FullPublish"
xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
Vlastnosti a podmínky
Vlastnosti představují nezbytné informace potřebné k sestavení projektu. Takové vlastnosti jsou definovány v prvku PropertyGroup. Tyto vlastnosti se skládají z párů klíč-hodnota, kde název prvku vlastnosti definuje klíč vlastnosti a obsah prvku definuje hodnotu vlastnosti. Můžete například definovat vlastnosti s názvem ServerName a ConnectionString pro uložení statického názvu serveru a připojovacího řetězce.
<PropertyGroup>
<ServerName>FABRIKAM\TEST1</ServerName>
<ConnectionString>
Data Source#FABRIKAM\TESTDB;InitialCatalog#ContactManager,...
</ConnectionString>
</PropertyGroup>
Podmínky mohou být specifikovány prostřednictvím prvků, aby bylo možné specifikovat kritéria pro vyhodnocení prvku. Toto je určeno slovem podmínky při definování vlastnosti, jak je uvedeno níže:
<PropertyGroup>
<OutputRoot Condition#" '$(OutputRoot)'##'' ">..\Publish\Out\</OutputRoot>
...
</PropertyGroup>
Když MSBuild zpracuje tuto definici vlastnosti, nejprve zkontroluje, zda je k dispozici hodnota vlastnosti $(OutputRoot). Pokud je hodnota vlastnosti prázdná – jinými slovy, uživatel nezadal hodnotu pro tuto vlastnost – podmínka se vyhodnotí jako true a hodnota vlastnosti je nastavena na ..\Publish\Out.
Položky a skupiny položek
Soubor projektu definuje vstupy do procesu sestavení, což jsou ve skutečnosti různé typy souborů. V nomenklatuře MSBuild jsou tyto vstupy reprezentovány prvky Item a jsou definovány v prvku ItemGroup. Stejně jako prvky Property můžete prvek Item pojmenovat, jak chcete. Musíte však zadat atribut Zahrnout k identifikaci souboru nebo zástupného znaku, který položka představuje.
<ItemGroup>
<ProjectsToBuild Include#"$(SourceRoot)ContactManager-WCF.sln"/>
</ItemGroup>
Cíle a úkoly
Prvek Task představuje individuální instrukci sestavení (nebo úlohu). MSBuild obsahuje velké množství předdefinovaných úloh. Například:
- Úloha Kopírovat zkopíruje soubory do nového umístění.
- Úloha Csc vyvolá kompilátor Visual C#.
- Úloha Vbc vyvolá kompilátor jazyka Visual Basic.
- Úloha Exec spouští určený program.
- Úloha Zpráva zapíše zprávu do loggeru.
Úkoly musí být vždy obsaženy v prvcích Target. Element Target je sada jedné nebo více úloh, které se provádějí postupně, a soubor projektu může obsahovat více cílů.
<Project xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name#"LogMessage">
<Message Text#"Hello world!" />
</Target>
</Project>