문제

최근에 내장 변환 도구를 사용하여 웹 응용 프로그램 프로젝트 (및 일부 종속 프로젝트)를 .NET 2.0에서 .NET 3.5로 업그레이드했습니다. 2.0의 외부 MS AJAX 라이브러리 대 MS AJAX 3.5를 사용하는 등 모든 것이 잘 작동합니다.

새로운 Lambda Expression 구문을 사용해 보았을 때 내 문제가 발생합니다. 컴파일러는 Lambda 표현식을 유효한 구문으로 인식하지 못합니다. Target Frame Work 버전은 솔루션의 모든 프로젝트에서 3.5로 설정되었으며 동일한 솔루션의 라이브러리 프로젝트에서 Lambda Expressions를 성공적으로 사용할 수있었습니다.

그것은 나에게 오류를주는 코드입니다. 너무 특별한 것은 없습니다.

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

        });

내가 얻는 특정 오류는 다음과 같습니다.

Error   102 Invalid expression term '>' D:\projects\bohlco\pmr\PMR\Web\App_Code\Bootstrapper.cs 13  41  D:\...\Web\

모든 도움은 대단히 감사하겠습니다. 나는 운이 거의없이 Google을 검색하고 있습니다

도움이 되었습니까?

해결책

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>

또한 IIS에서 호스팅하는 경우 올바른 폴더가 응용 프로그램으로 설정되어 있고 ASP.NET v2.blah (v1.1.blah가 아님)를 사용하고 있는지 확인하십시오.

다른 팁

VS 2008 변환 도구에 대한 경험은 많지 않지만 다른 프로젝트 변환 도구에 "문제가 발생했습니다. 'Broken'프로젝트의 .csproj 파일을 작동하는 프로젝트와 비교하는 것이 좋습니다. 아마도 전환 유틸리티가 프로젝트에서 무언가를 깨뜨 렸을 것입니다. 새 프로젝트를 만들고 모든 소스 파일을 복사 할 수도 있습니다.

기존 프로젝트 RE 참조를 통해 뛰어 들어야하는 몇 가지 후프, TBH는 새 프로젝트를 만들고 기존 소스 파일을 새 프로젝트에 추가하는 것이 더 쉽다는 것을 알았습니다.

Lambda를 전달하는 메소드에 대한 매개 변수를 추측하고 있습니다.

이것이 사실이라면 람다를 특정 유형의 대의원으로 캐스팅해야합니다. 이것은 혼란 스럽지만 알아야 할 것은 람다가 항상 올바르게 추론 될 수 없으므로 특정 유형의 대표를 수락하기 위해 시전하거나 메소드 서명을 변경해야한다는 것입니다.

이 시도:

ObjectFactory.Initialize((Action<T>)(x => // where T is the typeof x
{
    // ...
}));

또한 특정 유형의 대의원 (예 : 조치)을 수락하기 위해 초기화를 위해 몇 가지 과부하를 시도 할 수 있습니다.

방법이 특정 유형의 대의원 유형을 수락하는 경우이 답변을 무시할 수 있습니다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top