Net Core环境下TypeLite未添加tt文件等内容的问题咨询
解决.NET Core项目中TypeLite未自动添加tt文件及Script文件夹的问题
确实,TypeLite在.NET Core SDK-style项目中的行为和传统.NET Framework项目不一样——这是因为两者的项目系统和NuGet包集成逻辑有差异,不是你安装配置时漏了步骤,而是**.NET Core项目需要手动完成这些操作**,原因和具体步骤如下:
为什么自动生成失效?
传统.NET Framework项目里,TypeLite的NuGet包会通过install.ps1脚本自动帮你创建.tt模板文件和Script文件夹,但.NET Core的SDK-style项目默认禁用了这类NuGet安装脚本的自动执行(出于安全性和项目系统一致性的考虑),所以这些内容不会自动生成。
手动配置的具体步骤
1. 确认安装正确的NuGet包
如果还没安装,优先安装TypeLite.Core(专门适配.NET Core的版本),或者确保你安装的TypeLite版本是支持.NET Core的(建议用最新稳定版)。
2. 手动添加Text Template(.tt)文件
- 右键你的.NET Core项目 → 添加 → 新建项
- 在搜索框输入"Text Template",选择对应的模板创建一个.tt文件(比如命名为
ModelToTypescript.tt) - 打开这个.tt文件,替换成TypeLite的生成代码,示例如下:
<#@ template language="C#" #> <#@ assembly name="$(TargetDir)TypeLite.dll" #> <#@ assembly name="$(TargetDir)TypeLite.NetCore.dll" #> <#@ import namespace="TypeLite" #> <#@ import namespace="TypeLite.NetCore" #> <# // 配置TypeLite生成规则,这里以驼峰命名、加载当前程序集为例 var tsDefinitions = TypeScript.Definitions() .ForLoadedAssemblies() .WithFormatter((type, formatter) => formatter.WithCamelCase()); #> <#= tsDefinitions.Generate() #>
3. 创建Script文件夹(可选但推荐)
右键项目 → 新建文件夹,命名为Scripts,后续可以把生成的TypeScript文件放到这里。如果想让tt文件直接输出到这个文件夹,可以修改tt代码里的生成逻辑,或者在tt文件的属性里设置输出路径。
4. 配置tt文件的自动生成属性
- 右键你的.tt文件 → 属性
- 将自定义工具设置为
TextTemplatingFileGenerator,这样每次保存tt文件时,都会自动生成对应的.ts文件。
5. (可选)配置构建时自动生成
如果希望每次构建项目时都自动更新TypeScript定义,需要编辑你的.csproj文件,添加以下配置:
<PropertyGroup> <!-- 开启构建时的文本模板转换 --> <TransformOnBuild>true</TransformOnBuild> <!-- 可选:如果需要在构建前清理旧的生成文件 --> <TransformOutOfDateOnly>false</TransformOutOfDateOnly> </PropertyGroup>
这样配置后,你就能在.NET Core项目里正常使用TypeLite生成TypeScript定义了。
内容的提问来源于stack exchange,提问作者Bronek
相关产品推荐
相关产品推荐

