项目模板:用 TargetFileName 替换文件

Project template: file's replacement with TargetFileName

我正在尝试制作一个模板,其中用户在 "Add-New project" 上提供的项目名称将影响文件名。如here所述,这应该很容易。但是我在 vstemplate 文件中做的任何事情都不会修改文件名,正如我认为的那样。

vstemplate 相关部分:

<Project File="ProjectTemplate.csproj" ReplaceParameters="true">
  <ProjectItem ReplaceParameters="true" TargetFileName="Properties\AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
  <ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$Class1.cs" OpenInEditor="true">Class1.cs</ProjectItem>
</Project>

我预计在安装 vsix(引用 C# 项目模板)后,当使用新创建的模板添加新项目时,创建失败并出现以下错误:

我也尝试只修改 csproj 文件,但也没有成功:它确实创建了一个项目,但没有执行所需的替换。

可以用 vstemplate 重命名文件吗?

您在 vstemplate 中的 Project 节点中引用的 csproj- 文件需要是一个 额外文件 ,不是模板项目解决方案中引用的 csproj-文件。

还将对 $safeprojectname$Class1.cs 的引用添加到额外的 csproj-File。 然后它应该按预期工作。

因此您的模板项目中的文件结构将是例如:

/
-- /Properties
          -- AssemblyInfo.cs
-- Project.csproj               [The one referenced in your .sln]
-- ProjectTemplate.csproj       [The one used for replacements]
-- Class1.cs