多项目模板(.NET 8、ASP.NET Core、VS 2022)的某些文件中的模板参数未被替换

问题描述 投票:0回答:1

我的场景

  • VS 17.8.7
  • .NET 8

我有以下 ASP.NET Core 托管 Blazor WASM 项目:

我正在尝试将其导出为多项目模板。为此,我执行以下操作:

  1. 查找/替换当前项目名称的所有实例
    $ext_safeprojectname$
  2. 将每个项目单独导出为模板。
  3. 从生成的 .zip 文件夹中提取文件并将其放置在新目录中。
  4. 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

为什么这些文件中的模板参数没有被替换?它们在其他任何地方都被正确替换,甚至在客户项目中也是如此。

.net asp.net-core visual-studio-2022 blazor-webassembly visual-studio-templates
1个回答
0
投票

我按照该视频中的说明从 CLI 创建模板,它解决了这个问题。 https://www.youtube.com/watch?v=iHDOiO_Wf78

我确实遇到了另一个问题,防伪令牌错误,但它解决了替换问题。

© www.soinside.com 2019 - 2024. All rights reserved.