【问题标题】:Missing folders in custom Visual Studio project template自定义 Visual Studio 项目模板中缺少文件夹
【发布时间】:2017-10-25 03:49:59
【问题描述】:

我将创建一个自定义 Visual Studio 项目模板,以避免为 ASP.NET Core 项目重复额外的常见配置任务,例如添加支持 MySQL 的 EntityFramework。所以我为此创建了一个新的示例项目,并使用 Project > Export template 进行了导出。

但是当我根据我的自定义模板创建一个新项目时,所有像 ControllersViews 这样的文件夹都不见了。只有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>

【问题讨论】:

    标签: visual-studio asp.net-core visual-studio-2017 visual-studio-templates


    【解决方案1】:

    这个漂亮的 workaround 是 Visual Studio 2017 的实际应用。编辑 .vstemplate 并添加:

    <CreateInPlace>true</CreateInPlace>
    

    里面:

    <TemplateData>...</TemplateData>
    

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

    Documents\Visual Studio 2017\Templates\ProjectTemplates\
    

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

    【讨论】:

    • 这行得通,但是更新模板在 Visual Studio 中真是一团糟:我在 Documents/Visual Studio 2017/Templates/ProjectTemplates 中的 zip 文件完全被忽略了。而是使用C:\Users\Daniel\AppData\Roaming\Microsoft\VisualStudio\15.0_51c08c96\ProjectTemplatesCache 中提取的文件夹。所以我必须在那里更新它或首先删除模板的子文件夹。这种愚蠢的行为会给简单的事情带来很多麻烦......但是感谢您的解决方案,当您首先清除缓存时它会起作用:)
    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    相关资源
    最近更新 更多