Visual Studio 2008无法识别Lambda表达式语法

Chr*_*ght 1 c# asp.net lambda .net-3.5 visual-studio-2008

我最近使用内置的转换工具将Web应用程序项目(以及一些依赖项目)从.net 2.0升级到.net 3.5.一切都运行良好,例如使用MS AJAX 3.5与2.0中的外部MS AJAX库.

我尝试使用新的Lambda表达式语法时出现问题.编译器不会将Lambda表达式识别为有效语法.解决方案中的所有项目中的目标框架工作版本都设置为3.5.我也能够在同一解决方案中的库项目中成功使用Lambda表达式.

是给我错误的代码.没什么特别的.

ObjectFactory.Initialize(x => 
        {
            x.ForRequestedType<IUnitIdSequencingService>().TheDefaultIsConcreteType<UnitIdSequencingService>();
            x.ForRequestedType<IGadgetDAO>().TheDefault.Is.OfConcreteType<GadgetDAO>().WithCtorArg("instance").EqualToAppSetting("OSHAInspectionManager");

        });
Run Code Online (Sandbox Code Playgroud)

我得到的具体错误是:

Error   102 Invalid expression term '>' D:\projects\bohlco\pmr\PMR\Web\App_Code\Bootstrapper.cs 13  41  D:\...\Web\
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.我一直在寻找谷歌,运气不佳

Mar*_*ell 7

如果ASP.NET正在编译任何页面(即您没有预编译WAP),那么您需要确保ASP.NET了解C#3.0(.NET 3.5)编译器.确保以下内容web.config:

<system.codedom>
   <compilers>
      <compiler language="c#;cs;csharp"
            extension=".cs"
            warningLevel="4"
            type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=
         <providerOption name="CompilerVersion" value="v3.5"/>
         <providerOption name="WarnAsError" value="false"/>
      </compiler>
   </compliers>
</system.codedom>
Run Code Online (Sandbox Code Playgroud)

此外,如果您在IIS中托管,请确保将正确的文件夹设置为应用程序,并确保它使用的是ASP.NET v2.blah(而不​​是v1.1.blah).