我们如何让T4模板根据用户正在编辑的.cs文件生成代码?

时间:2015-08-16 16:08:49

标签: visual-studio t4

我正在尝试创建一个T4模板,以避免我们的开发人员在我们的框架中创建大量必需的样板代码。假设开发人员创建了一个接口并使用我们的自定义属性对其进行标记。我希望它能够通过其他方法增强标记有该自定义属性的任何界面,这意味着我的T4模板必须动态生成部分类。但是,我希望这样,这种自动生成可以即时无缝地发生,最好是当用于智能感知的内部自动编译发生时。你知道当你在Visual Studio中创建一个新类并切换到另一个源文件并开始使用那个你不必保存或编译它的类时,Intellisense能够立即看到你创建的新类吗?我希望使用从我的T4模板生成的代码具有相同的自动行为。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你不能轻易做到你想做的事,但这里有一些从最简单到最有可能你想要的选择(最难)。

  1. 创建code snippets

  2. 创建Visual Studio Item Template

  3. 使用Castle DynamicProxy在运行时创建额外位。

  4. 创建一个单独的项目来保存T4生成的类,如my answer here

  5. 中所述
  6. 作为项目构建的前一步(修改.csproj文件来执行此操作),您可以编译要从中生成代码的源代码,然后反思,生成代码然后添加它在真正的编译步骤之前到项目。这就是MSR Orleans项目的作用。你可以阅读他们的source code here。这真的很酷! : - )