如何在T4模板中使用Linq?

如何在T4模板中使用Linq?,linq,t4,Linq,T4,我正在使用T4为一个项目生成一些屏幕和中间层代码,并希望使用Linq简化一些模板代码。但是,当我尝试使用Linq时,模板会报告语法错误。在Visual Studio 2008中,默认情况下(和大多数在线示例中使用的情况一样),模板是使用2.0框架编译的,该框架不包括Linq。(见附件) 要解决此问题,需要三个步骤: 在模板的language属性中,指定“C#v3.5”或“VBv3.5”-VS2010不需要此步骤,因为VS2010始终使用.Net 4.0 为System.Core.dll添加程序集

我正在使用T4为一个项目生成一些屏幕和中间层代码,并希望使用Linq简化一些模板代码。但是,当我尝试使用Linq时,模板会报告语法错误。

在Visual Studio 2008中,默认情况下(和大多数在线示例中使用的情况一样),模板是使用2.0框架编译的,该框架不包括Linq。(见附件)

要解决此问题,需要三个步骤:

  • 在模板的language属性中,指定“C#v3.5”或“VBv3.5”-VS2010不需要此步骤,因为VS2010始终使用.Net 4.0
  • 为System.Core.dll添加程序集指令
  • 导入System.Linq命名空间
  • 您的模板现在将如下所示:

    <#@ template language="C#v3.5" #>
    <#@ assembly name="System.Core" #>
    <#@ import namespace="System.Linq" #>
    
    
    

    您现在可以在模板中使用Linq和其他新的语言功能。

    我不得不使用它来获得System.Core.dll的3.5版本。碰巧,“包含”项目是2.0/3.0项目吗?这也许可以解释为什么它不知道如何在没有完全限定名的情况下找到System.Core。在我将语言从
    C
    更改为
    C\v3.5
    后,这对我来说很有效。谢谢奇怪的是,intellisense没有将此显示为一个选项@用户1007074你的意思是?这个问题可以追溯到私人测试版(或者可能是第一次公开测试版)。我敢肯定,如果你仔细看的话,你会发现那个时代有很多“有趣”的东西值得评论。