我正在构建包含6个不同项目的.Net Core 2.0 Web API多项目模板,因此我使用这些链接创建了我的模板:
问题在于,当我从这个模板创建一个新项目时,它不会用新的项目名称替换模板名称,这使我可以手动更改每个文件和每个项目中的命名空间
这是我的template.json:
{
"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"
}
]
}
这是我的template.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="CSharp\Template 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 Core模板中是否有任何解决方案?
答案 0 :(得分:0)
基本上如果您只想使用旧的$ safeprojectname $,您可以在template.json中编辑“sourceName”:“Template.Tools.WebAPI”attibute以匹配您要替换的内容。假设您只想替换“Template”而不是“Template.Tools.WebAPI”,只需将SourceName的值更改为“Template”即可。此外,您可以添加“符号”字段以添加自定义替换参数,类似于:
"symbols": {
"foo-rename": {
"type": "parameter",
"datatype": "string",
"replaces": "foo",
"defaultValue": "new-component",
"description": "Renames component"
},
}
这将替换模板包含的每个文件中每次出现的“foo”。但是,这在使用Sidewaffle Creator时不适用于文件或文件夹名称。但是不要把我钉在那个上因为我还没弄明白。我只想等待这两个github问题的答案: https://github.com/dotnet/templating/issues/396 https://github.com/ligershark/sidewafflev2/issues/32