使用带反射的T4 .tt模板

时间:2014-09-16 15:01:11

标签: c# .net reflection visual-studio-2013 t4

在网上搜索我发现从2007年到2010年左右的许多问题都有关于T4发动机锁定组件的问题。这个问题是由此造成的:

  1. 创建.tt T4模板
  2. 在同一解决方案中反映某些程序集,使用它来生成代码
  3. T4在ctrl + s上生成代码
  4. T4现已反映装配已锁定
  5. 构建解决方案将失败,因为生成的反射程序集的.dll文件现已锁定,Visual Studio无法释放它。
  6. Oleg Sych(T4首席开发人员)的解决方案

    • 使用EnvDTE(api与Visual Studio交谈)
    • FxCop的Introspection(自定义.NET反射API)

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

    有没有办法继续使用我们的用例?这个用例是:

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

1 个答案:

答案 0 :(得分:2)

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

Shadow Copying Assemblies

显然,如果您使用T4 Assembly Directive,则影子复制为handled for you starting with Visual Studio 2010 SP1