2011-03-21 2 views
2

HttpContextBase의 사용은 컴파일 오류 던지고하게 몇 가지 코드를 컴파일 할 경우 문제를 갖는가져온 유형은 여러 번 정의 - 만 xbuild에서 모노 2.10.1

UserService.cs(13,26): error CS0433: The imported type `System.Web.HttpContextBase' is defined multiple times 

기분을 상하게하는 라인은 다음과 같습니다

private readonly HttpContextBase httpContext; 

코드 줄을 주석 처리하거나 주석 처리하면 오류가 사라지고 어셈블리가 컴파일됩니다.

다른 프로젝트 (이 프로젝트의 테스트 프로젝트)에서 HttpContextBase을이 개체의 생성자에 전달하도록 선언하려고 할 때 동일한 오류가 발생합니다. 따라서 프로젝트 간 문제로 보입니다.

이것은 프로젝트 파일 문제입니까? (거기에 System.Web에 대한 참조를 하나 이상 찾을 수 없습니다.) AfterBuild 단계를 약간 변경하기 전에 컴파일 중이므로 csproj 파일에서 뭔가를 엉망으로 만들었습니다.

모노 빌드 트렁크 빌드 세트를 사용하여 xbuild를 컴파일하여 사용하는 Mono 2.10.1을 사용하여 빌드합니다.

기본 Monodevelop 빌드 동작을 사용하여 컴파일해도이 오류가 발생하지 않습니다.

+0

당신은 자세한 엑스 코드 출력을 활성화하고 어딘가에 붙여 넣을 수 있습니다? –

+0

할 것입니다 - 어떤 수준의 자세한 정보를 제공합니까? –

+0

C# 컴파일러의 전체 명령 줄 인수를 포함 할 수 있습니다. –

답변

6

형식 System.Web.HttpContextBase는 .NET 3.5 SP1의 System.Web.Abstractions.dll에 있지만 .NET 4.0의 System.Web.dll에 정의되어 있습니다. 즉, System.Web.Abstractions.dll의 형식에 대한 참조가있는 컴파일 된 dll은 System.Web.dll에 "형식 전달"됩니다.

/Users/shimms/Development/convergence/lib/System.Web.Abstractions.dll에 System.Web.Abstractions.dll의 로컬 복사본이있는 것 같습니다. 아마도 .NET 3.5 버전과 충돌 할 것입니다. 4.0 System.Web.dll.

+1

고마워요 - 때로는 가장 분명한 것들이 가장 애매합니다. –

0

이 문제는 여러 클래스에 정의 된 형식을 참조 할 때 발생합니다. 이 문제를 해결하려면 참조를 편집하고 문제를 일으키는 DLL 중 하나를 선택 취소하십시오.

Visual Studio/Xamarin에서 오류 위로 마우스를 가져 가면이 형식이있는 여러 참조 이름이 표시됩니다. 확인하고 하나의 참조 또는 클래스 만 포함하십시오.

다음은 참조 용 스크린 샷입니다. 문제를 해결 한 후

enter image description here

는 :

enter image description here