[英]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.