Отсутствующие папки в пользовательском шаблоне проекта Visual Studio

Я собираюсь создать собственный шаблон проекта Visual Studio, чтобы избежать повторения дополнительной работы по выполнению общих задач по настройке для проекта ASP.NET Core, таких как добавление EntityFramework с поддержкой MySQL. Поэтому я создал новый пример проекта для этого и сделал экспорт, используя Project> Export template.

Но когда я создаю новый проект на основе моего пользовательского шаблона, все папки Controllers или же Views не хватает. Только wwwroot существует. Я осмотрел .vstemplate файл, который, кажется, добавляет папки правильно

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

Так что мне не понятно, что wwwroot создан, но Controllers нет, так как они используют точно такую ​​же директиву.

Полный файл шаблона VS:

<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>

1 ответ

Решение

Этот хороший обходной путь актуален для Visual Studio 2017. Редактировать .vstemplate и добавить:

<CreateInPlace>true</CreateInPlace>

внутри:

<TemplateData>...</TemplateData>

Не забудьте скопировать обновленный ZIP-файл в:

Documents\Visual Studio 2017\Templates\ProjectTemplates\

Это должно перезагрузить шаблон в VS. Пожалуйста, обратите внимание на комментарий @Lion ниже, если у вас есть проблемы с перезагрузкой.

Другие вопросы по тегам