.net 使用CodeDOM发布

.net 使用CodeDOM发布,.net,vb.net,winforms,code-generation,codedom,.net,Vb.net,Winforms,Code Generation,Codedom,我用它来编译CodeDOM: Dim provider As CodeDomProvider = CodeDomProvider.CreateProvider("VisualBasic") Dim parameters As New System.CodeDom.Compiler.CompilerParameters() ' Add reference parameters.ReferencedAssemblies.Add("System.dll") parameters.Referenced

我用它来编译CodeDOM:

Dim provider As CodeDomProvider = CodeDomProvider.CreateProvider("VisualBasic")

Dim parameters As New System.CodeDom.Compiler.CompilerParameters()
' Add reference
parameters.ReferencedAssemblies.Add("System.dll")
parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll")
parameters.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll")
parameters.ReferencedAssemblies.Add("System.Drawing.dll")
'Compile parameters
Dim Output1 As String = "OutputApp"
parameters.GenerateExecutable = True
parameters.OutputAssembly = Output1
parameters.CompilerOptions = "/target:winexe"

Dim strCode As String = sb.ToString
Dim CompileResults As New System.CodeDom.Compiler.CompilerResults(Nothing)

CompileResults = provider.CompileAssemblyFromSource(parameters, strCode)
问题是我需要使用lambda表达式和拆分重载方法,但codedom似乎无法识别它,如下所示:

Dim t As New Threading.Thread(Sub() SharedMethods.DoStuff(True))
t.Start()
这是:

Dim strseveralcmds() As String = SharedMethods.DoRequests("mylink.txt").Replace(" ", String.Empty).Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
当使用codeDOM编译时,这两行都会抛出“Expression was expected”。。。 对于第一个,我可以为这个项目管理自己,因为我真的不需要参数,可以只使用AddressOf,但我想无论如何

现在对于第二个我不知道任何解决方法,因为它必须是换行字符串,而不是字符


有什么建议吗?为什么CodeDOM不编译所有的.net代码?还是我遗漏了什么?

为什么要删除答案?看起来很准确?!为了运行Lambda表达式,您需要包含对LINQ的引用。我已经搜索过它,但显然它只适用于.NET3.5+。。。有2.0的解决方案吗?没有,但CodeDOM可用于.NET的更高版本。但是我需要使用.NET2.0。。。我将尝试为我的代码找到一个解决方案,然后。。。谢谢