我遇到CodeDomProvider问题。当我编译代码VB时,没有错误。但是,如果此代码在我调用这些函数时具有扩展名(例如:string().contains()
,char().count
,char().AsEnumerable
等),则会返回与所有这些扩展相等的异常:
'未找到'Char()'类型的'公共成员'计数'
'公共成员'包含'类型'字符串()'未找到'
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 :(得分:1)
听起来您的代码文件需要导入扩展方法 - 即它不包括:
Imports System.Linq
你做到了吗?如果没有,你可以发布一个示例vb代码文件,你会看到错误吗?