小编jlv*_*ero的帖子

T4中的扩展方法

我试图在VS2008的T4模板中使用PGK.Extensions for VB.NET,我得到:

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
Run Code Online (Sandbox Code Playgroud)

在块代码中使用扩展名:

<#
   Me.WriteLine(item.Name.RemoveAllSpecialCharacters.ToUpper)
#>
Run Code Online (Sandbox Code Playgroud)

RemoveAllSpecialCharacters是PGK.Extensions.dll的字符串扩展方法.

有谁能够帮我?

编辑:

好.它的:

<#@ template language="VBv3.5" ...
Run Code Online (Sandbox Code Playgroud)

但这打破了VS2008插件中的DevArt T4 Editor intellisense和语法高亮.请改用有形T4编辑器.

vb.net t4 .net-3.5 visual-studio-2008 tangible-t4-editor

5
推荐指数
1
解决办法
685
查看次数

在发布模式下调试

我正在尝试使用WinDbgSOS调试用于教育目的的.NET托管代码应用程序.

Module Module1

  Sub Main()

    Console.Read()
    throwExceptionMethod()

  End Sub

  Private Sub throwExceptionMethod()

    Dim localString As String = "bad string"
    If localString = "bad string" Then
      Throw New System.NotSupportedException("Can't process the string.")
    End If

  End Sub

End Module
Run Code Online (Sandbox Code Playgroud)

在调试模式下编译时,我可以看到抛出异常的方法和破坏我的应用程序的本地字符串.

输出!CLRStack命令:

0:000> !CLRStack
OS Thread Id: 0x1148 (0)
DBGHELP: mscorwks - public symbols
         C:\Program Files\Debugging Tools for Windows (x64)\sym\mscorwks.pdb\EC7B2AF3D7A74E1FB2A04CB8AF5F867A1\mscorwks.pdb
DBGHELP: ntdll - public symbols
         C:\Program Files\Debugging Tools for Windows (x64)\sym\ntdll.pdb\9D04EB0AA387494FBD81ED062072B99C2\ntdll.pdb
DBGHELP: mscoreei - public symbols
         C:\Program Files\Debugging Tools …
Run Code Online (Sandbox Code Playgroud)

.net debugging windbg sos

3
推荐指数
1
解决办法
353
查看次数

IEnumerable <TSource> Where&IQueryable <TSource>之间的差异扩展方法

两者之间有什么不同

public static IEnumerable<TSource> Where<TSource>
        (this IEnumerable<TSource> source, Func<TSource, bool> predicate)
Run Code Online (Sandbox Code Playgroud)

public static IQueryable<TSource> Where<TSource>
        (this IQueryable<TSource> source, 
         Expression<Func<TSource, bool>> predicate)
Run Code Online (Sandbox Code Playgroud)

两种方法都可以以相同的方式接受lambda表达式.

List<string> fruits =
                new List<string> { "apple", "passionfruit", "banana", "mango", 
                                "orange", "blueberry", "grape", "strawberry" };
IEnumerable<string> query = fruits.Where(fruit => fruit.Length < 6);
Run Code Online (Sandbox Code Playgroud)

为什么委托函数的委托功能和表达存在?我必须要小心吗?

.net c# linq lambda extension-methods

2
推荐指数
1
解决办法
546
查看次数