2011-07-24 15 views
1

CodeDomProviderに問題があります。コードVBをコンパイルすると、エラーはありません。このコードは、拡張子(例:string().contains()char().countchar().AsEnumerable、など)を持っている場合しかし、私はこれらの関数を呼び出した瞬間に、それはすべてのこれらの拡張のための同等の例外を返します:拡張機能とCodeDomProvider

タイプで「公開メンバー 『カウント』 「シャア()」」

『になっていません公開メンバーは、タイプに『が含ま』『文字列()』が見つかりません』


Dim refs() As String = {"mscorlib.dll", "System.dll", "Microsoft.VisualBasic.dll","system.xml.dll", "system.core.dll", "system.data.dll"} 

oCParams.ReferencedAssemblies.AddRange(refs) 

これらは、コンパイルに参照されるアセンブリであり、これもありますFramework 4.0で実行するように構成されています。


    Dim Param As New Dictionary(Of String, String) 

    Param.Add("CompilerVersion", "v4.0") 

    Dim oCodeProvider = CodeDomProvider.CreateProvider("VisualBasic", Param) 

このコードは、文字列内にある:

Imports System 
Imports System.Xml 
Imports System.Data 
Imports System.Collections 
Imports System.Linq.Expressions 
Imports System.Linq 
Imports System.String 
Imports System.Linq.Enumerable 
Imports System.Collections.Generic 
Imports System.Runtime.CompilerServices 
Imports System.Runtime.CompilerServices.ExtensionAttribute 

Namespace Teste 
Class Classe 
Public Shared Function ProcessarLink(ByVal URL As System.Uri) As Boolean 
Dim QueryString = URL.Query.Remove(0, 1).Split("&"c).tolist 

If QueryString.Contains("xxx") Then 
... 
End If 

End Function 
Public Shared Function Personalizar(ByRef Vetor() As Char) As System.Collections.Generic.Dictionary(Of String,Object) 
... 
Dim Total As Integer = Vetor.Count 
... 
End Function 
End Class 
End Namespace 

私は私のアセンブリをコンパイルするためにそれを使用した後。

コードはエラーなしでコンパイルされますが、関数 'ProcessarLink'を呼び出すと 'Contains'の例外が返されます。または、 'Personalizar'関数を呼び出すとエラーが 'Count'に表示されます。これはAsEnumerableなどの他の拡張も同様です。

問題は何ですか?

+0

どのようにコードを作成しますか?文字列にコンパイルした場合のコードはどのように見えますか? – svick

答えて

1

あなたcodefileは、拡張メソッドをインポートする必要があるようですね - すなわち、それは含まれません。

Imports System.Linq 

あなたはそれをやっていますか?そうでない場合は、エラーが発生している場所でVBコードファイルの例を投稿できますか?

+0

例は元の投稿にあります。 System.Linqをインポートしてもエラーが発生します。 –

+0

コンパイルで 'Option Strict'を有効にすることができます - これはエラーを特定するのに役立ちます – Stuart

+0

問題を修正しました。私は 'As'を使わずに変数を宣言していました。 Visual Studio 2010を使用しても問題はありませんでしたが、私自身のコンパイルを作成すると、厳密に「As」を使用して変数を宣言しなければならず、この問題は解決しませんでした。私はちょうどVS 2010で問題が起こらない理由を理解していない。どうもありがとうございました! –