MS.NET在VB.NET lambda表达式上失败

时间:2011-07-25 08:11:44

标签: .net vb.net msbuild-4.0

我在使用命令行中的MSBuild(版本4)构建项目时遇到问题 当声明lambda表达式时:

Private Sub Foo(ByVal s As String)
    Dim WL = Sub(str As String)
                 If Not String.IsNullOrEmpty(str) Then
                     Console.WriteLine(str)
                 End If
             End Sub
    WL(s)
End Sub

错误发生在上面的第二行代码:

  

错误BC30201:预期的表达。

在Visual Studio 2010中,它编译得很好。

MSBuild BAT文件:

SET MSBUILD="C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
SET LogDll="C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Engine.Dll"

SET VSBuildSolName="d:\Projects\Source\Test.sln"

SET VSBuildConfigNameD="Debug"
SET VSBuildConfigNameR="Release"

SET VSBuildErrFileNameD="d:\Projects\build\Test_errD.txt"
SET VSBuildErrFileNameR="d:\Projects\build\Test_errR.txt"

CALL %MSBUILD% %VSBuildSolName% /p:Configuration=%VSBuildConfigNameD% /logger:FileLogger,%LogDll%;LogFile=%VSBuildErrFileNameD% /verbosity:normal /P:NOWARN= /tv:3.5

1 个答案:

答案 0 :(得分:2)

作为对您问题的回答

  

1)为什么Visual Studio 2010构建它没有错误?

当然可以在Visual Studio的每个后续版本中编写代码,这些代码在早期版本中不起作用,尤其是当此类代码使用当前版本的新功能或Visual Studio或Express Edition的当前IDE时。

以一行一行为例,你不能在2010年以前的VB.Net版本中做到这一点,作为另一个例子,你不能省略2010年之前的版本中的续行字符,你可以在2010年你代码的某些部分。