T4 模板 Linq 不工作
T4 Template Linq not working
我尝试在 VB.NET 内使用 T4 模板。
出于测试目的,我在 Visual Studio 2015
中创建了一个控制台项目。
并使用以下代码添加了一个 .tt
文件:
<#@ template debug="true" hostspecific="true" language="VB" #>
<#@ output extension=".vb" #>
<#@ assembly name="System.Windows.Forms" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="System.Xml.Linq" #>
<#@ assembly name="System.Linq" #>
<#@ assembly name="System.Data.Linq" #>
<#@ import namespace="System.Resources" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.ComponentModel.Design" #>
<#@ import namespace="System.Xml.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ import namespace="System.Core" #>
<#
Dim myNameSpace As String = "Errors"
Dim myClassName As String = "GetErrors"
Dim myTypeOfResourceManager As String = "[Enums].TypeOfResourceManager.Test"
Dim myResourcePath As String = "Resource"
Dim myFileName As String = "Test.resx"
Dim myFilePath As String = Path.Combine(Path.GetDirectoryName(Me.Host.ResolvePath("")), myResourcePath, myFileName)
Dim myReader= New ResXResourceReader(myFilePath)
myreader.UseResXDataNodes = true
Dim myDateTime As String = Date.Now.ToString
Dim myProperties As String()
Dim myProperty As String
Dim doc = XDocument.Load(myFilePath)
Dim myEntries = From d As XElement In doc.Root.Elements("data")
Select New With {
Key .Name = d.Attribute("name").Value, _
Key .Value = d.Element("value").Value, _
Key .Comment = d.Element("comment").Value}
#>
问题是,我总是得到错误:
Severity Code Description Project File Line Suppression State
Error Compiling transformation: Expression of type 'Object' is not
queryable. Make sure you are not missing an assembly reference and/or
namespace import for the LINQ provider.
我从 MS 找到了这个信息:
https://msdn.microsoft.com/us-en/library/bb763092(v=vs.110).aspx
但是我做了所有的导入。
我错过了什么? - 请帮忙 - THX
最有趣的是:我的想法来自here
当我将此 C#
模板复制到我的项目中时,它可以正常工作。但是使用类似的 VB.NET
版本我得到了上面的错误...
添加这个:
<#@ import namespace="System.Linq" #>
我觉得其他都还好。
我尝试在 VB.NET 内使用 T4 模板。
出于测试目的,我在 Visual Studio 2015
中创建了一个控制台项目。
并使用以下代码添加了一个 .tt
文件:
<#@ template debug="true" hostspecific="true" language="VB" #>
<#@ output extension=".vb" #>
<#@ assembly name="System.Windows.Forms" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="System.Xml.Linq" #>
<#@ assembly name="System.Linq" #>
<#@ assembly name="System.Data.Linq" #>
<#@ import namespace="System.Resources" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.ComponentModel.Design" #>
<#@ import namespace="System.Xml.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ import namespace="System.Core" #>
<#
Dim myNameSpace As String = "Errors"
Dim myClassName As String = "GetErrors"
Dim myTypeOfResourceManager As String = "[Enums].TypeOfResourceManager.Test"
Dim myResourcePath As String = "Resource"
Dim myFileName As String = "Test.resx"
Dim myFilePath As String = Path.Combine(Path.GetDirectoryName(Me.Host.ResolvePath("")), myResourcePath, myFileName)
Dim myReader= New ResXResourceReader(myFilePath)
myreader.UseResXDataNodes = true
Dim myDateTime As String = Date.Now.ToString
Dim myProperties As String()
Dim myProperty As String
Dim doc = XDocument.Load(myFilePath)
Dim myEntries = From d As XElement In doc.Root.Elements("data")
Select New With {
Key .Name = d.Attribute("name").Value, _
Key .Value = d.Element("value").Value, _
Key .Comment = d.Element("comment").Value}
#>
问题是,我总是得到错误:
Severity Code Description Project File Line Suppression State Error Compiling transformation: Expression of type 'Object' is not queryable. Make sure you are not missing an assembly reference and/or namespace import for the LINQ provider.
我从 MS 找到了这个信息:
https://msdn.microsoft.com/us-en/library/bb763092(v=vs.110).aspx
但是我做了所有的导入。 我错过了什么? - 请帮忙 - THX
最有趣的是:我的想法来自here
当我将此 C#
模板复制到我的项目中时,它可以正常工作。但是使用类似的 VB.NET
版本我得到了上面的错误...
添加这个:
<#@ import namespace="System.Linq" #>
我觉得其他都还好。