我正在尝试在VS2008 for VB.NET的T4模板中使用PGK.Extensions,我得到:
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" ...
但这打破了VS2008插件中的DevArt T4编辑器智能感知和语法高亮。请改用有形T4编辑器。
答案 0 :(得分:2)
很难让自己开始工作,即使找到了here的博文(在上面的评论中也被@jlvaquero引用)。
最终对我有用的是使用visual studio macro vars然后导入命名空间
<#@ assembly name="$(ProjectDir)$(OutDir)\AssemblyName.dll" #>
答案 1 :(得分:1)
虽然从要应用于对象的代码中出现扩展方法,但实际上它是作为静态方法编译的。来自Microsoft的link将为您提供更多相关信息。
因此调用item.Name.RemoveAllSpecialCharacters()实际上编译为 StringExtensions .RemoveAllSpecialCharacters(item.Name)
因此,您可以尝试写作(未经测试,但应该有效):
<#
StringExtensions.RemoveAllSpecialCharacters(item.Name).ToUpper()
#>
希望有所帮助。