在 VS 模板中将文件名设置为项目名称

Set file name as project name in VS template

我一直在尝试在 VS 中为 C++ 创建自己的模板。 我想要一个与项目同名的 cpphpp 文件。 我已经读过这个link:How can I set a file name using a variable in a Visual Studio project template

但是,当使用我的模板时,文件不在我创建的项目中。

这是我的 vstemplate 文件:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  <TemplateData>
    <Name>My Template</Name>
    <Description>A test template</Description>
    <ProjectType>VC</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder>
    <DefaultName>MyProject</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <LocationField>Enabled</LocationField>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <Icon>__TemplateIcon.png</Icon>
    <PreviewImage>__PreviewImage.png</PreviewImage>
  </TemplateData>
  <TemplateContent>
    <Project TargetFileName="MyTemplate.vcxproj" File="MyTemplate.vcxproj" ReplaceParameters="true">
      <ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$.vcxproj.filters">MyTemplate.vcxproj.filters</ProjectItem>
      <ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$.cpp">MyFile.cpp</ProjectItem>
      <ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$.hpp">MyFile.hpp</ProjectItem>
  </TemplateContent>
</VSTemplate>

我做错了什么?

编辑:设法弄清楚了,不得不替换 vcxproj 文件本身中的文件名。感谢您的帮助!

我最终使用以下方法成功了:

  • 我在我的模板中添加了两个文件,分别命名为 $safeprojectname$.hpp$safeprojectname$.cpp
  • 我编辑了我的 vcxproj 文件(使用记事本++或任何其他文本编辑器),在主 Project 标签内添加以下标签:
  <ItemGroup>
    <ClInclude Include="%24safeprojectname%24.hpp" />
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="%24safeprojectname%24.cpp" />
  </ItemGroup>

我不得不使用 %24,因为 $ 在此上下文中不是有效字符,而 24 是该字符的 ASCII (/unicode) 值。