我试图在T4模板中使用VS2008 for VB.NET中的VS2008,我得到:
RemoveAllSpecialCharacters不是字符串的成员。
我的T4头:
<#@ template language="VB" hostspecific="false" debug="true" inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" #>
<#@ output extension="vb" #>
<#@ assembly name="PGK.Extensions.dll" #> // the dll is found
<#@ import namespace="StringExtensions" #> //Try with and without namespace分块代码中扩展的使用:
<#
Me.WriteLine(item.Name.RemoveAllSpecialCharacters.ToUpper)
#>RemoveAllSpecialCharacters是来自PGK.Extensions.dll的字符串扩展方法。
有人能帮我吗?
编辑:
好的。它是:
<#@ template language="VBv3.5" ...但这破坏了DevArt T4编辑器的智能感知和VS2008插件中的语法突出显示。使用有形的T4编辑器代替。
发布于 2012-03-28 07:51:21
虽然扩展方法出现在要应用于对象的代码中,但实际上它是作为静态方法编译的。这个来自微软的链接会给你更多的信息。
因此,调用item.Name.RemoveAllSpecialCharacters()实际上被编译为item.Name.RemoveAllSpecialCharacters
因此,您可以尝试编写(没有测试,但应该有效):
<#
StringExtensions.RemoveAllSpecialCharacters(item.Name).ToUpper()
#>希望这能有所帮助。
发布于 2014-08-28 20:19:06
即使在博客文章中找到了这里 (上面的评论中也有@jlvaquero引用),我也很难让它自己发挥作用。
最后对我起作用的是使用visual studio宏vars,然后导入名称空间。
<#@ assembly name="$(ProjectDir)$(OutDir)\AssemblyName.dll" #>https://stackoverflow.com/questions/9903140
复制相似问题