Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Szablony wieloprojektowe działają jako kontenery dla co najmniej dwóch projektów programu Visual Studio. Podczas tworzenia projektu opartego na szablonie wieloprojektowym każdy projekt w szablonie jest dodawany do rozwiązania.
Uwaga
Szablony omówione w tym artykule są używane podczas tworzenia projektów w programie Visual Studio, a nie tych tworzonych dotnet new .
Szablon wieloprojektowy ma co najmniej dwa szablony projektów i główny szablon typu ProjectGroup.
Szablony wieloprojektowe zachowują się inaczej niż w przypadku pojedynczych szablonów projektów. Mają one następujące unikatowe cechy:
Nie można przypisywać nazw poszczególnych projektów w szablonie wieloprojektowym, gdy szablon jest używany do tworzenia nowego projektu. Zamiast tego użyj atrybutu ProjectName w elemecie ProjectTemplateLink w pliku vstemplate, aby określić nazwę każdego projektu.
Szablony wieloprojektowe mogą zawierać projekty dla różnych języków, ale cały szablon można umieścić tylko w jednej kategorii. Określ kategorię szablonu w elemecie ProjectType pliku vstemplate.
Szablon wieloprojektowy musi zawierać następujące elementy skompresowane do pliku .zip :
Główny plik vstemplate dla całego szablonu wieloprojektowego. Ten plik główny vstemplate zawiera metadane wyświetlane w oknie dialogowym, w którym tworzysz nowy projekt. Określa również, gdzie znaleźć pliki vstemplate dla projektów w szablonie. Ten plik musi znajdować się w katalogu głównym pliku .zip .
Co najmniej dwa foldery zawierające pliki wymagane dla kompletnego szablonu projektu. Foldery zawierają wszystkie pliki kodu dla projektu, a także plik vstemplate dla projektu.
Na przykład plik .zip szablonu z wieloma projektami może zawierać następujące pliki i katalogi:
- MultiProjectTemplate.vstemplate
- \Project1\MyTemplate.vstemplate
- \Project1\Project1.vbproj
- \Project1\Class.vb
- \Project2\MyTemplate.vstemplate
- \Project2\Project2.vbproj
- \Project2\Class.vb
Plik główny vstemplate dla szablonu wieloprojektowego różni się od szablonu pojedynczego projektu w następujący sposób:
Atrybut Type elementu VSTemplate ma wartość ProjectGroup zamiast Project. Na przykład:
<VSTemplate Version="2.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">Element TemplateContent zawiera element ProjectCollection zawierający co najmniej jeden element ProjectTemplateLink definiujący ścieżki do plików vstemplate dołączonych projektów. Na przykład:
<TemplateContent> <ProjectCollection> <ProjectTemplateLink> Project1\MyTemplate.vstemplate </ProjectTemplateLink> <ProjectTemplateLink> Project2\MyTemplate.vstemplate </ProjectTemplateLink> </ProjectCollection> </TemplateContent>
Napiwek
Jeśli chcesz, aby szablon wieloprojektowy był wyświetlany tylko w oknie dialogowym nowego projektu, a nie w poszczególnych projektach, które zawiera, oznacz szablony wewnętrzne jako ukryte. Na przykład:
<VSTemplate Type="Project" ... >
<TemplateData>
...
<Hidden>true</Hidden>
</TemplateData>
...
</VSTemplate>
Tworzenie szablonu wieloprojektowego na podstawie istniejącego rozwiązania
Utwórz rozwiązanie i dodaj co najmniej dwa projekty.
Dostosuj projekty, dopóki nie będą gotowe do wyeksportowania do szablonu.
Napiwek
Jeśli używasz parametrów szablonu i chcesz odwołać się do zmiennych z szablonu nadrzędnego, prefiks nazwy parametru za pomocą
ext_polecenia . Na przykład$ext_safeprojectname$. Ponadto ustaw atrybut CopyParameters elementu ProjectTemplateLink na wartość true.<ProjectTemplateLink ProjectName="MyProject" CopyParameters="true">...</ProjectTemplateLink>W menu Projekt wybierz pozycję Eksportuj szablon.
Zostanie otwarty Kreator eksportu szablonu.
Na stronie Wybieranie typu szablonu wybierz pozycję Szablon projektu. Wybierz jeden z projektów, które chcesz wyeksportować do szablonu, a następnie wybierz pozycję Dalej. (Powtórz te kroki dla każdego projektu w rozwiązaniu).
Na stronie Wybieranie opcji szablonu wprowadź nazwę i opcjonalny opis, ikonę i obraz podglądu szablonu. Wybierz pozycję Zakończ.
Projekt jest eksportowany do pliku .zip i umieszczany w określonej lokalizacji wyjściowej.
Uwaga
Każdy projekt musi zostać wyeksportowany do szablonu oddzielnie, dlatego powtórz powyższe kroki dla każdego projektu w rozwiązaniu.
Utwórz katalog dla szablonu z podkatalogem dla każdego projektu.
Wyodrębnij zawartość pliku .zip każdego projektu do odpowiedniego utworzonego podkatalogu.
W katalogu podstawowym utwórz plik XML z rozszerzeniem .vstemplate . Ten plik zawiera metadane szablonu z wieloma projektami. Zapoznaj się z poniższym przykładem struktury pliku. Pamiętaj, aby określić ścieżkę względną do pliku vstemplate każdego projektu.
Zaznacz wszystkie pliki w katalogu podstawowym, a następnie z menu kontekstowego kliknij prawym przyciskiem myszy lub wybierz pozycję Wyślij do>folderu Skompresowane (spakowane).
Pliki i foldery są kompresowane do pliku .zip .
Skopiuj plik .zip do katalogu szablonu projektu użytkownika. Domyślnie ten katalog to %USERPROFILE%\Documents\Visual Studio <version>\Templates\ProjectTemplates.
W programie Visual Studio wybierz pozycję Plik>nowy>projekt i sprawdź, czy szablon jest wyświetlany.
Przykład dwóch projektów
W tym przykładzie przedstawiono podstawowy plik główny vstemplate z wieloma projektami. W tym przykładzie szablon zawiera dwa projekty: Moja aplikacja systemu Windows i Moja biblioteka klas. Atrybut ProjectName w elemecie ProjectTemplateLink określa nazwę nadaną projektowi.
Napiwek
Jeśli atrybut ProjectName nie zostanie określony, nazwa pliku vstemplate jest używana jako nazwa 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>
Przykład z folderami rozwiązań
W tym przykładzie użyto elementu SolutionFolder, aby podzielić projekty na dwie grupy, klasy matematyczne i klasy graficzne. Szablon zawiera cztery projekty, z których dwa są umieszczane w każdym folderze rozwiązania.
<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>
Przykład z odwołaniami do projektu
W tym przykładzie pokazano, jak dodać odwołania do projektu do szablonu wieloprojektowego i jest to zasadniczo rozszerzenie przykładu szablonu wieloprojektowego .
W tym przykładzie rozwiązanie zawiera dwa projekty: MultiProject.Client i MultiProject.Shared. Projekt MultiProject.Client odwołuje się do MultiProject.Shared.
Struktura folderów jest następująca:
- MultiProjectTemplate.vstemplate
- \MultiProject.Client\MultiProject.Client.csproj
- \MultiProject.Client\MyTemplate.vstemplate
- \MultiProject.Shared\MultiProject.Shared.csproj
- \MultiProject.Shared\MyTemplate.vstemplate
Gdy szablon jest używany, część MultiProject jest zastępowana nazwą projektu wprowadzana przez użytkownika.
MultiProjectTemplate.vstemplate wygląda następująco. Należy pamiętać, że atrybut CopyParameters parametrów ProjectTemplateLinkma wartość true i że atrybuty ProjectName używają zmiennej szablonu $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 może wyglądać podobnie do poniższego. Należy pamiętać, że tag Project ma atrybut ReplaceParameters ustawiony na wartość 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 może wyglądać podobnie do poniższego. Należy pamiętać, że atrybut Include of the ProjectReference używa zmiennej szablonu $ext_safeprojectname$
<Project>
...
<ItemGroup>
<ProjectReference Include="..\$ext_safeprojectname$.Shared\$ext_safeprojectname$.Shared.csproj" />
</ItemGroup>
</Project>