在网上搜索时,我发现了从 2007 年到 2010 年左右的许多问题,这些问题都与 T4 发动机锁定组件有关。这个问题是这样产生的:
- 创建 .tt T4 模板
- 反射(reflection)同一解决方案中的某些程序集,使用它来生成代码
- T4 在 ctrl+s 上生成代码
- T4 现在已锁定反射程序集
- 构建解决方案将失败,因为反射程序集生成的 .dll 文件现已锁定,Visual Studio 无法释放它。
Oleg Sych(T4 首席开发人员)的解决方案是
- 使用 EnvDTE(与 Visual Studio 对话的 API)
- FxCop 的 Introspection(自定义 .NET 反射 API)
这两种解决方案对于我的用例来说都不是最佳的。我们的合约上已经有很多反射代码。此外,反射作为 API 已经足够困难了,更不用说要求开发人员理解第二个 API 来推理代码结构了。
有没有办法仍然利用我们的用例?这个用例是:
- 使用 T4
- 反射(reflection) T4 所在项目中的装配
- Visual Studio 2013
最佳答案
您可以加载程序集以在新的 AppDomain
中进行反射,该应用程序域会从原始位置复制二进制文件。
显然,如果您使用 T4 Assembly Directive ,卷影复制为handled for you starting with Visual Studio 2010 SP1 .
关于c# - 使用带反射的 T4 .tt 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25872212/