我的场景
我有以下 ASP.NET Core 托管 Blazor WASM 项目:
我正在尝试将其导出为多项目模板。为此,我执行以下操作:
$ext_safeprojectname$
。MyTemplate.vstemplate
文件添加到新文件夹的根目录。这是生成的文件夹结构:
以下是
.vstemplate
文件的内容:
<VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>My Wasm Template</Name>
<Description>...</Description>
<Icon>Icon.ico</Icon>
<ProjectType>CSharp</ProjectType>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<ProjectTemplateLink ProjectName="$safeprojectname$.Client" CopyParameters="true">
MyWasmTemplate.Client\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$safeprojectname$.Server" CopyParameters="true">
MyWasmTemplate.Server\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$safeprojectname$.Data" CopyParameters="true">
MyWasmTemplate.Data\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$safeprojectname$.Shared" CopyParameters="true">
MyWasmTemplate.Shared\MyTemplate.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
结果
当我使用此模板创建新项目时,新项目名称会正确替换大多数
$ext_safeprojectname$
实例,客户端项目中的以下文件除外:
_Imports.razor
:
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using Microsoft.JSInterop
@using $ext_safeprojectname$.Client
@using $ext_safeprojectname$.Client.Layout
@using $ext_safeprojectname$.Shared
@using MudBlazor
MainLayout.razor
:
...
<PageTitle>$ext_safeprojectname$</PageTitle>
...
<p class="text-nowrap">$ext_safeprojectname$</p>
...
还有另一个 Blazor 组件:
@page "/blogs"
@using $ext_safeprojectname$.Shared.Dtos
@inject HttpClient Http
为什么这些文件中的模板参数没有被替换?它们在其他任何地方都被正确替换,甚至在客户项目中也是如此。
我按照该视频中的说明从 CLI 创建模板,它解决了这个问题。 https://www.youtube.com/watch?v=iHDOiO_Wf78
我确实遇到了另一个问题,防伪令牌错误,但它解决了替换问题。