如何创建默认不提供编号文件名的 VisualStudio 项模板

How to create a VisualStudio item template that does not offer numbered file names by default

如果我使用默认名称 foo.txt 创建项目模板,Visual Studio 默认情况下会在添加新对话框中提供名称 foo1.txt,即使没有 foo.txt 在文件夹中。

这通常没问题,但我需要创建一个项目模板,默认情况下 not 为文件名提供“1”后缀,与 App.config 模板行为。

我已经检查了 VS2019 安装中的 App.vstemplate 文件,但我没有看到任何会导致此行为的特殊设置。

样本:

<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
  <TemplateData>
    <DefaultName>foo.txt</DefaultName>
    <Name>Foo.txt file</Name>
    <Description>A foo.txt.</Description>
    <ProjectType>CSharp</ProjectType>
  </TemplateData>
  <TemplateContent>
    <ProjectItem>foo.txt</ProjectItem>
  </TemplateContent>
</VSTemplate>

在添加新对话框中显示为:

抱歉,恐怕答案是否定的。我认为这 行为是设计使然,不能由中的任何元素控制 .vstemplate.

我这边重现了这个问题。我发现的一件有趣的事情是,如果我们将文件扩展名更改为 .manifest,这个问题就会消失。

例如:

如果我要创建的项目模板类似于 foo.manifest 而不是 foo.txt,那么当我在新项目中添加该项目时它不会显示 1后缀。您可以通过将所有 foo.txt 内容更改为 foo.manifest.

轻松确认这一点

我同意 Will 的观点,他们对某些模板进行了特殊封装。更具体地说,这种行为对于我们创建的 Item 的文件扩展名是特殊的。创建 xxx.manifest Item 时我没有做任何不同的事情,但它与 xxx.txt Item 有所不同。所以我会认为有一个不可见和未知的规则来控制这种行为,并且这种行为可能不会在自定义扩展中被改变或控制。我相信这就像是产品团队设计的规则。

在我看来,目前的VS SDK不支持控制行为让VS不显示文件扩展名为.txt的项目'1' suffix。如果您确实想要此功能,请前往 Developer Community 在那里分享您的好主意。其实经过你的提醒,如果有这个功能就更好了,那么我们可以真正控制Default Name,所以如果你决定post你的想法,分享link 在您的问题中,对此感兴趣的成员会帮助投票。

希望对您有所帮助,如果我有任何误解,请随时告诉我:)