3

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

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
4

1 回答 1

2

作为对您问题的回答

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

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

以单行 PROPERTY 为例,在 2010 之前的 VB.Net 版本中不能这样做,又例如,在 2010 之前的版本中不能省略行继续符,而在 2010 的某些部分可以你的代码。

于 2011-08-16T10:47:58.763 回答