Vytváření šablon vícenásobného projektu
Šablony s více projekty fungují jako kontejnery pro dva nebo více projektů sady Visual Studio. Když vytvoříte projekt založený na šabloně s více projekty, každý projekt v šabloně se přidá do řešení.
Poznámka:
Šablony probírané v tomto článku jsou ty, které se používají při vytváření projektů v sadě Visual Studio, nikoli těch, které dotnet new
vytváří.
Šablona s více projekty má dvě nebo více šablon projektů a kořenovou šablonu typu ProjectGroup.
Šablony s více projekty se chovají jinak než jednotlivé šablony projektů. Mají následující jedinečné vlastnosti:
Jednotlivé projekty v šabloně s více projekty nelze přiřadit názvy, pokud se šablona používá k vytvoření nového projektu. Místo toho použijte atribut ProjectName u elementu ProjectTemplateLink v souboru vstemplate k zadání názvu pro každý projekt.
Šablony s více projekty můžou obsahovat projekty pro různé jazyky, ale celá samotná šablona může být umístěna pouze do jedné kategorie. Zadejte kategorii šablony v elementu ProjectType souboru vstemplate.
Šablona s více projekty musí obsahovat následující položky komprimované do souboru .zip :
Kořenový soubor vstemplate pro celou šablonu s více projekty. Tento kořenový soubor vstemplate obsahuje metadata zobrazená v dialogovém okně, kde vytvoříte nový projekt. Určuje také, kde najít soubory vstemplate pro projekty v šabloně. Tento soubor musí být umístěn v kořenovém adresáři souboru .zip .
Dvě nebo více složek, které obsahují soubory požadované pro úplnou šablonu projektu. Složky obsahují všechny soubory kódu pro projekt a také soubor vstemplate pro projekt.
Například šablona s více projekty .zip soubor, který má dva projekty, může mít následující soubory a adresáře:
- MultiProjectTemplate.vstemplate
- \Project1\MyTemplate.vstemplate
- \Project1\Project1.vbproj
- \Project1\Class.vb
- \Project2\MyTemplate.vstemplate
- \Project2\Project2.vbproj
- \Project2\Class.vb
Kořenový soubor vstemplate pro šablonu s více projekty se liší od šablony s jedním projektem následujícími způsoby:
Atribut Type elementu VSTemplate má hodnotu ProjectGroup místo Projectu. Příklad:
<VSTemplate Version="2.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
TemplateContent element obsahuje ProjectCollection element, který má jeden nebo více ProjectTemplateLink element, které definují cesty k vstemplate soubory zahrnuté projekty. Příklad:
<TemplateContent> <ProjectCollection> <ProjectTemplateLink> Project1\MyTemplate.vstemplate </ProjectTemplateLink> <ProjectTemplateLink> Project2\MyTemplate.vstemplate </ProjectTemplateLink> </ProjectCollection> </TemplateContent>
Tip
Pokud chcete, aby se v dialogovém okně nový projekt zobrazovala pouze šablona s více projekty, a ne jednotlivé projekty, které obsahuje, označte vnitřní šablony jako skryté. Příklad:
<VSTemplate Type="Project" ... >
<TemplateData>
...
<Hidden>true</Hidden>
</TemplateData>
...
</VSTemplate>
Vytvoření šablony s více projekty z existujícího řešení
Vytvořte řešení a přidejte dva nebo více projektů.
Přizpůsobte projekty, dokud nebudou připravené k exportu do šablony.
Tip
Pokud používáte parametry šablony a chcete odkazovat na proměnné z nadřazené šablony, předpona názvu parametru .
ext_
Například$ext_safeprojectname$
. Také nastavte CopyParameters atribut ProjectTemplateLink element na true.<ProjectTemplateLink ProjectName="MyProject" CopyParameters="true">...</ProjectTemplateLink>
V nabídce Projekt zvolte Exportovat šablonu.
Otevře se Průvodce exportem šablony.
Na stránce Zvolit typ šablony vyberte Šablonu projektu. Vyberte jeden z projektů, které chcete exportovat do šablony, a pak zvolte Další. (Tento postup zopakujete pro každý projekt v řešení.)
Na stránce Vybrat možnosti šablony zadejte název a volitelný popis, ikonu a obrázek náhledu šablony. Zvolte Dokončit.
Projekt se exportuje do souboru .zip a umístí se do zadaného výstupního umístění.
Poznámka:
Každý projekt musí být exportován do šablony samostatně, proto opakujte předchozí kroky pro každý projekt v řešení.
Vytvořte adresář pro šablonu s podadresářem pro každý projekt.
Extrahujte obsah souboru .zip každého projektu do odpovídajícího podadresáře, který jste vytvořili.
V základním adresáři vytvořte soubor XML s příponou souboru .vstemplate . Tento soubor obsahuje metadata pro šablonu s více projekty. Podívejte se na následující příklad struktury souboru. Nezapomeňte zadat relativní cestu k souboru vstemplate každého projektu.
Vyberte všechny soubory v základním adresáři a v místní nabídce klikněte pravým tlačítkem myši nebo v místní nabídce zvolte Složku Odeslat do>komprimované složky (zipped).
Soubory a složky se komprimují do .zip souboru.
Zkopírujte soubor .zip do adresáře šablony projektu uživatele. Ve výchozím nastavení je tento adresář %USERPROFILE%\Documents\Visual Studio <version>\Templates\ProjectTemplates.
V sadě Visual Studio zvolte Soubor>nový>projekt a ověřte, že se šablona zobrazí.
Příklad se dvěma projekty
Tento příklad ukazuje základní kořenový soubor vstemplate s více projekty. V tomto příkladu má šablona dva projekty: Moje aplikace systému Windows a Knihovna tříd. Atribut ProjectName v elementu ProjectTemplateLink určuje název, který je předán projektu.
Tip
Pokud není zadaný atribut ProjectName, název souboru vstemplate se použije jako název projektu.
<VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>Multi-Project Template Sample</Name>
<Description>An example of a multi-project template</Description>
<Icon>Icon.ico</Icon>
<ProjectType>VisualBasic</ProjectType>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<ProjectTemplateLink ProjectName="My Windows Application">
WindowsApp\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="My Class Library">
ClassLib\MyTemplate.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
Příklad se složkami řešení
Tento příklad používá SolutionFolder element k rozdělení projektů do dvou skupin, matematických tříd a grafických tříd. Šablona obsahuje čtyři projekty, z nichž dvě jsou umístěny do každé složky řešení.
<VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>Multi-Project Template Sample</Name>
<Description>An example of a multi-project template</Description>
<Icon>Icon.ico</Icon>
<ProjectType>VisualBasic</ProjectType>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<SolutionFolder Name="Math Classes">
<ProjectTemplateLink ProjectName="MathClassLib1">
MathClassLib1\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="MathClassLib2">
MathClassLib2\MyTemplate.vstemplate
</ProjectTemplateLink>
</SolutionFolder>
<SolutionFolder Name="Graphics Classes">
<ProjectTemplateLink ProjectName="GraphicsClassLib1">
GraphicsClassLib1\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="GraphicsClassLib2">
GraphicsClassLib2\MyTemplate.vstemplate
</ProjectTemplateLink>
</SolutionFolder>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
Příklad s odkazy na projekt
Tento příklad ukazuje, jak přidat odkazy na projekt do šablony s více projekty a je v podstatě rozšířením příkladu šablony s více projekty.
V tomto příkladu řešení obsahuje dva projekty, MultiProject.Client a MultiProject.Shared. Projekt MultiProject.Client odkazuje na MultiProject.Shared.
Struktura složek je následující:
- MultiProjectTemplate.vstemplate
- \MultiProject.Client\MultiProject.Client.csproj
- \MultiProject.Client\MyTemplate.vstemplate
- \MultiProject.Shared\MultiProject.Shared.csproj
- \MultiProject.Shared\MyTemplate.vstemplate
Při použití šablony se část MultiProject nahrazuje názvem projektu, který uživatel zadá.
MultiProjectTemplate.vstemplate vypadá takto. Upozorňujeme, že projectTemplateLink s má atribut CopyParameters nastaven na hodnotu true a že atributy ProjectName používají proměnnou šablony $safeprojectname$.
<VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
...
<TemplateContent>
<ProjectCollection>
<ProjectTemplateLink ProjectName="$safeprojectname$.Client" CopyParameters="true">
MultiProject.Client\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$safeprojectname$.Shared" CopyParameters="true">
MultiProject.Shared\MyTemplate.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
MultiProject.Client \MyTemplate.vstemplate může vypadat přibližně takto. Upozorňujeme, že značka Projectu má atribut ReplaceParameters nastavený na hodnotu true.
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
...
<TemplateContent>
<Project TargetFileName="MultiProject.Client.csproj" File="MultiProject.Client.csproj" ReplaceParameters="true">
...
</Project>
</TemplateContent>
</VSTemplate>
MultiProject.Client \MultiProject.Client.csproj může vypadat přibližně takto. Upozorňujeme, že atribut Include of the ProjectReference používá proměnnou šablony $ext_safeprojectname$
<Project>
...
<ItemGroup>
<ProjectReference Include="..\$ext_safeprojectname$.Shared\$ext_safeprojectname$.Shared.csproj" />
</ItemGroup>
</Project>
Související obsah
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro