2

ここ数ヶ月、AsyncCTPItheを使用して正常にコンパイルされました。

    Public Shared Iterator Function FindVisualChildren(Of T As DependencyObject)(ByVal depObj As DependencyObject) As IEnumerable(Of T)
    If depObj IsNot Nothing Then
        For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(depObj) - 1
            Dim child As DependencyObject = VisualTreeHelper.GetChild(depObj, i)
            If child IsNot Nothing AndAlso TypeOf child Is T Then

                Yield CType(child, T)
            End If

            For Each childOfChild As T In FindVisualChildren(Of T)(child)

                Yield childOfChild
            Next childOfChild
        Next i
    End If
End Function

突然、これはもはや当てはまりません。Visual Studioは、構文を認識せず、「EndofStatementExpected」で関数を波打つように見えなくなりました。

最近、私のマシンはVisual Studioを開いたまま(恥ずかしいことですが)オンのままになり、いくつかのWinowsアップデートをインストールするために自動的にシャットダウンされました。それ以来、私はソリューションをコンパイルすることができませんでした。2週間前の時点で、ソリューションのバックアップコピーにアクセスしました。これは、何かがうまくいかず、同じ問題が発生していないことを確認するためです。

.Net FrameworkAsyncCTPもアンインストールして再インストールしてみました。

私の知る限り、最近、いくつかの> netFramework4アップデートとセキュリティアップデートを受け取りました。

他の誰かがこれに光を当てて、MSとの電話で無駄な一日を節約できることを願っています。

4

1 に答える 1

0

関数定義にエラーがあります。VB での関数の宣言については、ドキュメントを参照してください。C# や他のプログラミング言語と混同していると思います。

http://msdn.microsoft.com/en-gb/library/sect4ck6.aspx

関数の戻り値は関数の最後に ... As IEnumerable(Of T) で指定されるため、Shared と Function の間で Iterator という単語を使用しないでください。

Iterator プロシージャー修飾子は Visual Studio 11 でのみ使用できるため、通常、VS 10 以前ではコンパイルされません。

イテレータ プロシージャ修飾子

于 2012-05-10T13:17:33.753 に答える