Arn*_*VdP 6 multi-project project-template visual-studio
我正在尝试为 Visual Studio 2019 创建多项目解决方案模板。我可以在多个文件夹中成功添加多个项目。
作为下一步,我想将本地文件添加到解决方案的根目录中,甚至添加到诸如.gitignore, nuget.config,... 文件的文件夹中,但到目前为止还没有运气。
下面是我的.vstemplate文件,注释行是我要添加的文件。我已经尝试过这种方式,将线条放在一个<SolutionFolder>块中,将它们放在ProjectCollection块外,......
<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>Test Application</Name>
<Description>A project template for creating a basic Test Application</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>false</CreateNewFolder>
<DefaultName>MaestroApp</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<BuildOnLoad>true</BuildOnLoad>
<Icon>M.png</Icon>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<!--
<ProjectItem ReplaceParameters="false" TargetFileName=".gitattributes">.gitattributes</ProjectItem>
<ProjectItem ReplaceParameters="false" TargetFileName=".gitignore">.gitignore</ProjectItem>
<ProjectItem ReplaceParameters="false" TargetFileName="directory.build.props">directory.build.props</ProjectItem>
<ProjectItem ReplaceParameters="false" TargetFileName="nuget.config">nuget.config</ProjectItem>
<ProjectItem ReplaceParameters="false" TargetFileName="README.MD">README.MD</ProjectItem>-->
<SolutionFolder Name="Documents" CreateOnDisk="true"></SolutionFolder>
<SolutionFolder Name="src" CreateOnDisk="true">
<ProjectTemplateLink ProjectName="$projectname$" CopyParameters="true">
MaestroApplicationTemplate\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$projectname$.Data" CopyParameters="true">
MaestroApplicationTemplate.Data\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$projectname$.ProcessEngine" CopyParameters="true">
MaestroApplicationTemplate.ProcessEngine\MyTemplate.vstemplate
</ProjectTemplateLink>
</SolutionFolder>
<SolutionFolder Name="Test" CreateOnDisk="true">
</SolutionFolder>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
我知道您问的是 a .vstemplate,但我认为由于dotnet new现在模板更合适,让我回答如何在那里做(因为它也需要一些修补):
我假设您已经根据需要构建了解决方案,添加了所有解决方案文件等。然后您添加了 template.json,如文档中所述。
下一步是确保模板 JSON 具有solution类型,而不是通常的“项目”:
"tags": {
"language": "C#",
"type": "solution"
},
Run Code Online (Sandbox Code Playgroud)
此外,您还需要确保解决方案文件的名称与您在模板中设置的标识不同。Visual Studio 不喜欢这样,并且会用它自己的解决方案覆盖您提供的解决方案,从而以某种方式丢失所有解决方案文件。我真的不知道为什么。
因此,如果您的身份设置BlazorServerApp如下:
"identity": "BlazorServerApp",
Run Code Online (Sandbox Code Playgroud)
然后将解决方案命名为GeneratedSolution.sln. 然后添加一个修饰符,将该解决方案重命名为正确的名称:
"sources": [
{
"modifiers": [
{
"condition": "(HostIdentifier == \"dotnetcli\" || HostIdentifier == \"dotnetcli-preview\")",
"rename": {
"GeneratedSolution.sln": "BlazorServerApp.sln"
}
}
]
}
],
Run Code Online (Sandbox Code Playgroud)
完成后,模板应该在 Visual Studio 和dotnet new.
您可能还会遇到隐藏文件未包含在模板中的问题,例如在尝试包含.editorconfig. 另一个SO问题中有一个解决方案。
这是一个完整的例子template.json:
{
"$schema": "http://json.schemastore.org/template",
"author": "Your Name",
"name": "Blazor Server Application",
"description": "A blazor server solution template",
"identity": "BlazorServerApp",
"shortName": "my-blazor-server",
"classifications": [ "Web", "Blazor" ],
"icon": "icon.png",
"sourceName": "BlazorServerApp",
"preferNameDirectory": true,
"guids": [
"53C5DAEE-6473-4825-87C2-46EBC88EBBD3",
"E5E29BA4-B30E-46DD-A9F2-8378E685C5F8"
],
"tags": {
"language": "C#",
"type": "solution"
},
"sources": [
{
"exclude": [
".idea/**",
".template.config/**",
"**/node_modules/**/*"
],
"modifiers": [
{
"condition": "(HostIdentifier == \"dotnetcli\" || HostIdentifier == \"dotnetcli-preview\")",
"rename": {
"GeneratedSolution.sln": "BlazorServerApp.sln"
}
},
{
"rename": {
"editorconfig": ".editorconfig",
"gitignore": ".gitignore"
}
}
]
}
],
"symbols": {
"HostIdentifier": {
"type": "bind",
"binding": "HostIdentifier"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是在 Visual Studio 中生成的解决方案的屏幕截图,其中包含所有解决方案文件:
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |