VS2017中导出的项目模板缺少源文件

Exported project template in VS2017 misses source files

本文关键字:源文件 项目 VS2017      更新时间:2023-10-16

当我在Visual Studio 2017中使用Project -> Export template选项时,生成的ZIP文件包括主项目文件,但不包括我添加的任何*.cpp*.hpp文件。如何在模板中包含所有内容?我还应该注意,这种行为似乎在某些时候在更新中发生了变化。

您需要

手动编辑 .vstemplate 文件并在 <TemplateData> 标记中添加<CreateInPlace>true</CreateInPlace>,使其如下所示:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
    <TemplateData>
        <Name>TemplateTest</Name>
        <Description><No description available></Description>
        <ProjectType>JavaScript</ProjectType>
        <ProjectSubType>
        </ProjectSubType>
        <SortOrder>1000</SortOrder>
        <CreateNewFolder>true</CreateNewFolder>
        <CreateInPlace>true</CreateInPlace>
        <DefaultName>CodovaTemplateTest</DefaultName>
        <ProvideDefaultName>true</ProvideDefaultName>
        <LocationField>Enabled</LocationField>
        <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
        <Icon>__TemplateIcon.ico</Icon>
  </TemplateData>

问题出在您的.vstemplate文件中。您需要做的是编辑它,以便VS知道应该有其他文件。解压缩已导出的文件,添加所需的文件,然后打开.vstemplate文件。您应该更改的.vstemplate部分位于<TemplateContent>标记之间:

    <TemplateContent>
                <Project TargetFileName="project.vcxproj" File="project.vcxproj" ReplaceParameters="true">
                    <ProjectItem ReplaceParameters="false" TargetFileName="$projectname$.vcxproj.filters">project.vcxproj.filters</ProjectItem>
                    <ProjectItem ReplaceParameters="true" TargetFileName="file1.cpp">file1.cpp</ProjectItem>
                    <ProjectItem ReplaceParameters="true" TargetFileName="file2.h">file2.h</ProjectItem>
                    <ProjectItem ReplaceParameters="true" TargetFileName="input.txt">input.txt</ProjectItem>
                </Project>
    </TemplateContent>

这会告诉 VS 在制作项目时将文件添加到项目中file1.cppfile2.hinput.txt。只需将名称更改为所需的文件,保存所有内容并重新压缩文件夹即可。

是的,我只是把源代码放在里面,...我很幸运从 github 导出代码,因为它包含多个项目......这是一件愚蠢的事情...在项目依赖项下"项目依赖项选项仅在具有多个项目的解决方案中可用",因此我没有选择源的选项。...他们是故意这样做的,但我不知道为什么。