在 T4 模板中使用 .NET Core 程序集

qrj*_*rjo 4 c# t4 visual-studio .net-core .net-core-3.1

我们当前正在将一个项目从 .NET Framework 迁移到 .NET Core 3.1,但在使某些 T4 模板正常工作时遇到问题。这些模板从我们的解决方案导入一个或多个程序集,以便使用反射生成代码。这些程序集是 .NET Core 3.1 库。问题似乎是 Visual Studio 2019 中的 T4 引擎在 Framework 上运行,无法正确加载核心程序集。

运行模板时,我得到一个ReflectionTypeLoadException. 检查异常后,很明显 T4 引擎找不到System.Runtime. 有一些解决方法(此处),但是当我应用它时,只会将问题转移到下一个依赖项,即 NuGet 包。所以解决方法不起作用。

有没有办法让 T4 模板与 .NET Core 3.1 程序集一起使用?或者是否有与 .NET Core 3.1 一起使用的 T4 模板的类似替代方案?

RdJ*_*JNL 7

我遇到了这个问题,找不到任何好的解决方案。因此,我开发了一种替代 T4 工具,它混合使用 Visual Studio 的 .NET Framework T4 功能进行预处理,并使用 .NET Core 可执行文件来执行模板代码。它可以从 GitHub获得。它非常适合我的项目,希望它也能帮助其他人。

  • 这是最好的 Visual Studio 扩展,本不应该是必需的,但遗憾的是。 (2认同)