首页 > 解决方案 > 如何创建默认不提供编号文件名的 VisualStudio 项模板

问题描述

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

这通常很好,但我需要创建一个项目模板,默认情况下为文件名提供“1”后缀,就像App.config模板的行为一样。

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

样本:

<?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>

在添加新对话框中显示为: 在此处输入图像描述

标签: visual-studiovsxvisual-studio-sdk

解决方案


对不起,但我担心答案是否定的。我认为这种行为是设计使然,不能由 .vstemplate 中的任何元素控制。

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

例如:

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

在此处输入图像描述

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

在我看来,当前的 VS SDK 不支持控制让 VS 不会显示'1' suffix文件扩展名为.txt. 如果您确实想要此功能,请前往开发者社区分享您的好主意。其实经过您的提醒,如果有这个功能就更好了,这样我们就可以真正控制了Default Name,所以如果您决定发布您的想法,请在您的问题中分享链接,感兴趣的成员将帮助投票。

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


推荐阅读