使用带反射的 T4 .tt 模板

本文关键字:tt 模板 T4 反射的 | 更新日期: 2023-09-27 18:22:14

在网上

搜索,我发现从 2007 年到 2010 年左右的许多问题都与 T4 发动机锁定组件有关。此问题是这样导致的:

  1. 创建 .tt T4 模板
  2. 反思同一解决方案中的某些程序集,使用它来生成代码
  3. T4 在 ctrl+s 上生成代码
  4. T4 现在已锁定反射程序集
  5. 生成解决方案将失败,因为生成的反射程序集的.dll文件现在已锁定,Visual Studio 无法释放它。

Oleg Sych(T4首席开发人员(的解决方案是

  • 使用 EnvDTE (api 与 Visual Studio 对话(
  • FxCop's Introspection(自定义.NET 反射API(

这两种解决方案对于我的用例来说都不是最佳的。我们已经在合同上有很多反射代码。此外,作为 API 的反射已经够难的了,更不用说要求开发人员理解第二个 API 来推理代码结构了。

有没有办法仍然使用我们的用例?此用例是:

  • 使用 T4
  • 反思与 T4 生活相同的项目中的组装
  • Visual Studio 2013

使用带反射的 T4 .tt 模板

可以在新AppDomain中加载程序集以进行反射,该卷影从其原始位置复制二进制文件。

卷影复制程序集

显然,如果您使用 T4 程序集指令,则从 Visual Studio 2010 SP1 开始为您处理卷影复制。