使用带反射的 T4 .tt 模板
本文关键字:tt 模板 T4 反射的 | 更新日期: 2023-09-27 18:22:14
在网上
搜索,我发现从 2007 年到 2010 年左右的许多问题都与 T4 发动机锁定组件有关。此问题是这样导致的:
- 创建 .tt T4 模板
- 反思同一解决方案中的某些程序集,使用它来生成代码
- T4 在 ctrl+s 上生成代码
- T4 现在已锁定反射程序集
- 生成解决方案将失败,因为生成的反射程序集的.dll文件现在已锁定,Visual Studio 无法释放它。
Oleg Sych(T4首席开发人员(的解决方案是
- 使用 EnvDTE (api 与 Visual Studio 对话(
- FxCop's Introspection(自定义.NET 反射API(
这两种解决方案对于我的用例来说都不是最佳的。我们已经在合同上有很多反射代码。此外,作为 API 的反射已经够难的了,更不用说要求开发人员理解第二个 API 来推理代码结构了。
有没有办法仍然使用我们的用例?此用例是:
- 使用 T4
- 反思与 T4 生活相同的项目中的组装
- Visual Studio 2013
可以在新AppDomain
中加载程序集以进行反射,该卷影从其原始位置复制二进制文件。
卷影复制程序集
显然,如果您使用 T4 程序集指令,则从 Visual Studio 2010 SP1 开始为您处理卷影复制。