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

时间:2019-07-02 16:41:01

标签: visual-studio vsx visual-studio-sdk

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

通常可以,但是我需要创建一个项目模板,默认情况下,为文件名提供后缀“ 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>

在添加新对话框中显示为: enter image description here

1 个答案:

答案 0 :(得分:1)

对不起,但我担心答案会否定的。我认为这  行为是设计使然,不能由  .vstemplate。

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

例如:

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

enter image description here

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

我认为,当前的VS SDK不支持控制行为,以使VS不会为文件扩展名为'1' suffix的项目显示.txt。如果您确实需要此功能,请转到Developer Community在此处分享您的好主意。实际上,在您提醒之后,最好先提供此功能,然后我们可以真的控制Default Name,因此,如果您决定发表想法,则可以在问题中分享链接并与感兴趣的成员分享它将有助于投票。

希望有帮助,如果我误解了任何内容,请随时告诉我:)