繁体   English   中英

如何在构建时在 Blazor 项目中运行 T4 模板

[英]How to run T4 template in Blazor project on build

我有一个带有 T4 模板的 Blazor 项目,我为自动脚手架编写了一些代码。 它在 Visual Studio 中工作得很好,但我必须修改并保存模板才能让它再次运行(如记录和预期的那样)。

我也想在构建项目时运行模板,所以不是VS运行模板,它必须是MSBuild。 我浏览了一堆关于该主题的文章,看起来我必须重新导入默认目标, 如此处所述

我在 .csproj 文件的顶部添加了以下内容,这就是事情发生的时候:

<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.Web" />

这是我得到的错误:

无法识别 TargetFramework 值“netstandard2.1”。 它可能拼写错误。 如果不是,则必须明确指定 TargetFrameworkIdentifier 和/或 TargetFrameworkVersion 属性。 TestProject C:\\Program Files\\dotnet\\sdk\\3.1.401\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.TargetFrameworkInference.targets 93

完整的 .csproj 文件:

<Project Sdk="Microsoft.NET.Sdk.Web">

    <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.Web" />
    
    <PropertyGroup>
        <TargetFramework>netstandard2.1</TargetFramework>
        <RazorLangVersion>3.0</RazorLangVersion>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.1" />
        <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.1" PrivateAssets="all" />
        <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="3.2.1" PrivateAssets="all" />
        <PackageReference Include="System.Net.Http.Json" Version="3.2.0" />
    </ItemGroup>

</Project>

我错过了什么/做错了什么?

您应该注意文章中的信息:

幸运的是,有一个解决方法:您可以显式导入默认目标文件,然后导入文本模板目标:

解决方案

您应该在netstandard 2.1节点之后导入这些目标。

在我身边,我使用这些:

<Project Sdk="Microsoft.NET.Sdk.Web">
        
           <PropertyGroup>
               <TargetFramework>netstandard2.1</TargetFramework>
               <RazorLangVersion>3.0</RazorLangVersion>
           </PropertyGroup>
       
       
         <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.Web" />
         <Import Project="$(VSToolsPath)\TextTemplating\Microsoft.TextTemplating.targets"/>
       
           <ItemGroup>
               <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.1"/>
               <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build"
   Version="3.2.1" PrivateAssets="all" />
               <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer"
   Version="3.2.1" PrivateAssets="all" />
               <PackageReference Include="System.Net.Http.Json" Version="3.2.0"/>
           </ItemGroup>
       
 </Project>

然后

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM