【问题标题】:How to set project template location in New Project window in TemplateData element如何在 TemplateData 元素的 New Project 窗口中设置项目模板位置
【发布时间】:2018-03-15 13:48:42
【问题描述】:

我正在创建一个新的项目模板作为 Visual Studio 扩展项目,并希望它显示在我的自定义组中,该组在安装项目模板之前确实存在,位于 Visual C# 节点下。

我希望可以在 .vstemplate 文件 TemplateData 部分中设置项目模板位置。我尝试设置ProjectSubType 值、TemplateGroupIDNumberOfParentCategoriesToRollUp 但它不起作用。当 Visual Studio 的 Experimental 实例启动时,项目模板总是在 Visual C# 组中,而不是在 Visual C#/My Group 中。即使我的组已经存在,ProjectSubType 也不起作用,但 the documentation 说它应该在子组中创建。 如何在 TemplateData 部分设置项目模板位置?

【问题讨论】:

    标签: c# visual-studio visual-studio-extensions project-template


    【解决方案1】:

    自定义模板不包含本地化模板的子目录。您可以在 Environment\Projects and Solutions 下的 Options 对话框中更改自定义模板的默认目录。

    我经常手动添加一个文件夹,然后复制zip文件,例如我在文件夹C:\Users\xxx\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#下创建一个名为“My Group”的文件夹.

    然后创建一个名为 Jack 的简单控制台应用程序并导出此项目模板,我没有选择此选项。

    然后我将 Jack.zip 复制到上面的 My Group 文件夹中。重新打开VS,我会在My Group文件夹下得到这个项目模板。

    这是我这边默认的.vstemplate文件:

        <VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
      <TemplateData>
        <Name>Jack</Name>
        <Description>&lt;No description available&gt;</Description>
        <ProjectType>CSharp</ProjectType>
        <ProjectSubType>
        </ProjectSubType>
        <SortOrder>1000</SortOrder>
        <CreateNewFolder>true</CreateNewFolder>
        <DefaultName>Jack</DefaultName>
        <ProvideDefaultName>true</ProvideDefaultName>
        <LocationField>Enabled</LocationField>
        <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
        <Icon>__TemplateIcon.ico</Icon>
      </TemplateData>
      <TemplateContent>
        <Project TargetFileName="Jack.csproj" File="Jack.csproj" ReplaceParameters="true">
          <ProjectItem ReplaceParameters="true" TargetFileName="App.config">App.config</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem>
          <Folder Name="Properties" TargetFolderName="Properties">
            <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
          </Folder>
        </Project>
      </TemplateContent>
    </VSTemplate>
    

    【讨论】:

    • 感谢您的回答,但我不想手动复制已安装的模板。我将模板导出为 Visual Studio 扩展。在我构建 VSIX 文件并安装我的扩展后,我希望我的模板在没有任何手动操作的情况下就位。
    • 如果是这样,是否可以在默认项目模板文件夹中创建新文件夹“我的组”?它可以将 zip 文件复制到 VSIX 项目中创建的文件夹吗?
    • 那么您的建议是创建文件夹并使用 C# 代码复制已安装的 .zip 模板文件?它被认为是一种好的做法吗?不是有一些内置的方法吗?如果是这样......我应该在哪里处理这个“安装完成”事件?
    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多