You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2019+.NET5.0环境T4模板运行缺System.Runtime 5.0.0.0如何解决?

T4模板加载.NET 5程序集System.Runtime报错解决方案

核心原因

VS 2019 内置的 T4 模板执行引擎基于 .NET Framework 运行,默认无法直接识别 .NET 5 编译的程序集依赖,两次报错本质都是引擎找不到 .NET 5 版本的 System.Runtime 程序集引用。

可选解决方案

方案1:使用.NET 官方T4工具dotnet-t4(最适配.NET 5+,推荐)

  • 全局安装dotnet-t4工具:
    dotnet tool install -g dotnet-t4
  • 确保Core.Common项目已完成编译生成最新的Common.dll
  • 命令行执行模板生成SQL文件:
    t4 你的模板文件名.tt -o 输出的SQL文件名.sql
    该方案完全避开.NET Framework引擎的兼容问题,运行稳定。

方案2:模板显式引用.NET 5的System.Runtime程序集(适合需要在VS内直接运行模板的场景)

  • 找到本地.NET 5引用包的System.Runtime.dll路径,默认路径为:
    C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.dll
  • 在T4模板最顶部添加显式引用:
<#@ assembly name="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.dll" #>
  • 如需适配团队不同环境,可替换为基于NuGet包路径的通用写法:
<#@ assembly name="$(NuGetPackageRoot)microsoft.netcore.app.ref\5.0.0\ref\net5.0\System.Runtime.dll" #>

添加后即可解决编译阶段找不到Enum类型的报错。

方案3:枚举项目改为多目标框架(兼容性最好)

  • 打开Core.Common项目的.csproj文件,将单目标框架配置:
    <TargetFramework>net5.0</TargetFramework>
    修改为多目标框架配置:
    <TargetFrameworks>net5.0;netstandard2.0</TargetFrameworks>
  • 重新编译Core.Common项目,修改T4模板的程序集引用路径为netstandard2.0的输出目录:
<#@ assembly name="$(ProjectDir)..\Core.Common\bin\Debug\netstandard2.0\Common.dll" #>

.NET Framework的T4引擎可以正常加载netstandard2.0的程序集,无依赖冲突问题。

注意事项

  • 每次修改EnumDictionaries枚举后,需先编译Core.Common项目再运行T4模板,避免加载旧版本程序集
  • VS 2022已内置对.NET Core/.NET 5+ T4模板的原生支持,升级VS版本也可直接解决该兼容问题

内容的提问来源于stack exchange,提问作者titan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:57:02