Missing folders in a custom Visual Studio project template

I am going to create a custom Visual Studio project template to avoid repeating the additional work of common configuration tasks for an ASP.NET Core project, such as adding an EntityFramework with MySQL support. So I created a new sample project for this and exported using Project> Export template.

But when I create a new project based on my custom template, all folders, such as Controllers or Views , are missing. Only wwwroot exists. I checked the .vstemplate file, which seems to add folders correctly

  <Folder Name="wwwroot" TargetFolderName="wwwroot" /> <Folder Name="Controllers" TargetFolderName="Controllers"> 

So it’s not clear to me that wwwroot created, but there are no Controllers , since they use the exact same directive.

Full VS template file:

 <VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project"> <TemplateData> <Name>AspNetCoreMySQL</Name> <Description>Test</Description> <ProjectType>CSharp</ProjectType> <ProjectSubType> </ProjectSubType> <SortOrder>1000</SortOrder> <CreateNewFolder>true</CreateNewFolder> <DefaultName>AspNetCoreMySQL</DefaultName> <ProvideDefaultName>true</ProvideDefaultName> <LocationField>Enabled</LocationField> <EnableLocationBrowseButton>true</EnableLocationBrowseButton> <Icon>__TemplateIcon.ico</Icon> </TemplateData> <TemplateContent> <Project TargetFileName="AspNetCoreMySQL.csproj" File="AspNetCoreMySQL.csproj" ReplaceParameters="true"> <Folder Name="Properties" TargetFolderName="Properties"> <ProjectItem ReplaceParameters="true" TargetFileName="launchSettings.json">launchSettings.json</ProjectItem> </Folder> <Folder Name="wwwroot" TargetFolderName="wwwroot" /> <Folder Name="Controllers" TargetFolderName="Controllers"> <ProjectItem ReplaceParameters="true" TargetFileName="PageController.cs">PageController.cs</ProjectItem> </Folder> <ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="ScaffoldingReadMe.txt">ScaffoldingReadMe.txt</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Startup.cs">Startup.cs</ProjectItem> </Project> </TemplateContent> </VSTemplate> 
+5
source share
1 answer

This nice workaround is relevant for Visual Studio 2017. Edit .vstemplate and add:

 <CreateInPlace>true</CreateInPlace> 

inside

 <TemplateData>...</TemplateData> 

Do not forget to copy the updated ZIP file:

 Documents\Visual Studio 2017\Templates\ProjectTemplates\ 

This should reload the template in VS. Please take a look at @Lion's comment below if you have problems with rebooting.

+5
source

Source: https://habr.com/ru/post/1268185/


All Articles