自定义 Visual Studio 项目模板中缺少文件夹

5
我将创建一个自定义的Visual Studio项目模板,以避免为ASP.NET Core项目重复执行常见配置任务,例如添加支持MySQL的EntityFramework。因此,我为此创建了一个新的示例项目,并使用“项目>导出模板”进行了导出。
但是,当我基于我的自定义模板创建新项目时,所有文件夹(如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个回答

8
这个好用的解决方法适用于Visual Studio 2017。您需要编辑.vstemplate并添加以下内容:
<CreateInPlace>true</CreateInPlace>

内部:

<TemplateData>...</TemplateData>

不要忘记将更新后的ZIP文件复制到:

Documents\Visual Studio 2017\Templates\ProjectTemplates\

这应该会在VS中重新载入模板。如果您重新加载时遇到问题,请注意下面@Lion的评论。


2
那个方法可以用,但是在Visual Studio中更新模板真的非常麻烦:我的位于Documents/Visual Studio 2017/Templates/ProjectTemplates的压缩文件完全被忽略了。取而代之的是使用C:\Users\Daniel\AppData\Roaming\Microsoft\VisualStudio\15.0_51c08c96\ProjectTemplatesCache中提取的文件夹。所以我必须在那里更新它或者首先删除模板的子文件夹。这种愚蠢的行为会导致很多麻烦来做简单的事情……但是感谢你的解决方案,当你首先清除缓存时它就起作用了 :) - Lion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接