我正在构建一个.NET Core 2.0 Web API多项目模板,其中包含6个不同的项目,因此我使用了这些链接来创建我的模板:
- 如何为dotnet创建自己的模板new
- 搭档创建者2017
- 如何为Visual Studio 2017创建项目模板(Sidewaffle Creator 2017)
问题是,当我从此模板创建一个新项目时,它不会用新项目名称替换模板名称,并且它使我手动更改每个文件中的名称空间以及每个项目。<<<<<<<<<</p>
这是我的模板:
{
"author": "Liran Friedman",
"classifications": [],
"description": ".Net Core Web API project template",
"name": "project template",
"defaultName": "Template.Tools.Project",
"identity": "Template.Tools.CSharp",
"groupIdentity": "Template.Tools",
"tags": {
"language": "C#",
"type": "project"
},
"shortName": "tmpproj",
"sourceName": "Template.Tools.WebAPI",
"guids": [],
"primaryOutputs": [
{
"path": "Template.Tools.Common\Template.Tools.Common.csproj"
},
{
"path": "Template.Tools.External\Template.Tools.External.csproj"
},
{
"path": "Template.Tools.Implementation\Template.Tools.Implementation.csproj"
},
{
"path": "Template.Tools.Interfaces\Template.Tools.Interfaces.csproj"
},
{
"path": "Template.Tools.Models\Template.Tools.Models.csproj"
},
{
"path": "Template.Tools.WebAPI\Template.Tools.WebAPI.csproj"
}
]
}
这是我的模板。Vstemplate:
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="ProjectGroup">
<TemplateData>
<Name>project template</Name>
<Description>.Net Core Web API project template</Description>
<TemplateID>Template.Tools.CSharp</TemplateID>
<DefaultName>Template.Tools.Project</DefaultName>
<Icon>project-icon.png</Icon>
<ProjectType>CSharp</ProjectType>
<NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
<SortOrder>5000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
</TemplateData>
<TemplateContent>
<ProjectCollection/>
<CustomParameters>
<CustomParameter Name = "$language$" Value="CSharp" />
<CustomParameter Name = "$uistyle$" Value="none"/>
<CustomParameter Name = "$groupid$" Value="Template.Tools" />
<CustomParameter Name = "SideWaffleNewProjNode" Value="CSharpTemplate Projects"/>
</CustomParameters>
</TemplateContent>
<WizardExtension>
<Assembly>Microsoft.VisualStudio.TemplateEngine.Wizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly>
<FullClassName>Microsoft.VisualStudio.TemplateEngine.Wizard.TemplateEngineWizard</FullClassName>
</WizardExtension>
</VSTemplate>
我知道,在创建Visual Studio模板的先前版本中,有一个参数$ safeprojectName $在.NET核心模板中是否有任何解决方案?
基本上,如果您只想使用旧的$ safeprojectName $,则可以编辑您的" sourcename":" template.tools.tools.webapi" attibute the the template.json中的attibute。代替。假设您只想替换"模板",而不是"模板"。此外,您可以添加一个"符号"字段来添加自定义替换参数,类似于此:
"symbols": {
"foo-rename": {
"type": "parameter",
"datatype": "string",
"replaces": "foo",
"defaultValue": "new-component",
"description": "Renames component"
},
}
这将替换您模板包含的每个文件中的每一个" foo"的发生。但是,使用搭档创建者时,这不适用于文件或文件夹名称。但是不要把我钉在那个上,因为我还没有完全弄清楚。我只会在这两个GitHub问题上等待答案:https://github.com/dotnet/templating/issues/396https://github.com/ligershark/sidewafflev2/issues/32