2011-07-03 2 views
4
나는 비주얼 스튜디오 솔루션에 3 개 프로젝트를 생성 할

를 참조 할 수 없습니다 :다른 프로젝트

  • Windows 서비스 (참조 비즈니스 계층, 일반 층, log4net.dll)
  • 비즈니스 계층 (참조 공통 층, log4net.dll)
  • 공통 레이어 (참조 log4net.dll)

단계 :

  1. 수정하지 않고 마법사를 사용하여 비즈니스 계층과 공통 계층을 만듭니다. 참조를 설정하면 모든 것이 작동합니다.

  2. 그런 다음 새 Windows 서비스 프로젝트를 솔루션에 추가합니다. 모든 CPU 대신 대상 플랫폼 x86이 추가되었음을 알았습니다. 나는 3 가지를 참조하고 코드는 올바르게 색칠되어 있습니다. 사전 컴파일 오류가 사라집니다. 이것은 참조가 인식되었음을 의미합니다.

  3. 그러나 솔루션을 빌드하면 Windows 서비스 프로젝트에 컴파일 오류가 발생합니다. 참조 된 어셈블리를 찾을 수 없습니다.

여기 무슨 일입니까? x86 구성에서 "유형 또는 네임 스페이스 이름 'log4net'을 찾을 수 없습니다 (사용 지시문 또는 어셈블리 참조가 누락 되었습니까?)"오류가 있습니까?

Windows 서비스 프로젝트에서 모든 CPU 구성을 사용하도록했습니다. 나는 모든 참고 문헌을 두 번 확인했는데 정확하다. 아직도 나는 아무것도 참조 할 수 없다.

시스템 사양 :

  • 윈도우 7의 x64 SP1 비주얼 스튜디오 2010
  • 궁극적 인

답변

6

글쎄, 이미 답을 찾았습니다. Log4net은 클라이언트 프로파일에서 사용할 수없는 어셈블리 인 System.Web.dll에 종속됩니다. 이 종속성의 핵심 원인은 log4net.Appender.AspNetTraceAppender 클래스이며 HttpContext 클래스를 사용하며 System.Web이 필요합니다.

바로 지금 라이브러리의 문서에서 알아야하거나 어렵게 찾아야 할 내용입니다. 건물은 경고를 표시하지만 오류가 아니라 경고 만 표시합니다.

C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.대상 (1360,9) : 경고 MSB3253 : 참조 된 어셈블리 "C : \ projects \ WindowsFormsApplication2 \ ClassLibrary1 \ bin \ Debug \ ClassLibrary1.dll"에 "System.Web, Version = 4.0"에 대한 종속성이 있으므로 해결되지 않았습니다. 0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "현재 대상 프레임 워크".NETFramework, Version = v4.0, Profile = Client "에 없습니다. 타겟 프레임 워크에없는 어셈블리에 대한 참조를 제거하거나 프로젝트 대상을 재 지정하십시오.

log4net 참조가 포함 된 어셈블리의 클래스를 참조하려고하는 코드의 오류가 뒤에옵니다.

C : \ 프로젝트 \ WindowsFormsApplication2 \ WindowsFormsApplication2 \ Form1.cs를 (12,9) : 오류 CS0246 : 형식 또는 네임 스페이스 이름 '으로 ClassLibrary1'을 (를) 찾을 수 없습니다 (당신이 누락 using 지시문 또는 어셈블리 참조 ?)

당신이 중 하나가 누락하지 않는 코드를 작성하는 동안 점진적으로 구축하지 않는 경우 오류의 많은있을 수 있습니다. 당신은 오류에 초점을 맞추고 경고가 오류의 진정한 원천이라는 것을 인식하지 못합니다. 또 다른 불쾌한 함정은 IntelliSense가 처음에는 행복하다는 것입니다. 이 어셈블리 참조를 올바르게 해석합니다. 경고 메시지가 항상 생성되는 것은 아니며, 많은 프로그래머가 오류 메시지를 놓치고 있다는 사실만으로 일부 경고가 나타납니다. 나는 아직 그 시나리오가있는 시나리오를 아직 발견하지 못했다. 확실하지 않다.

+0

이 것은 힘들었습니다 ... 경고는이 경우에 진정한 지표였습니다. '.NET Framework 4 Client Profile'에서 '.NET Framework 4'로 변경하면 문제가 해결되었습니다. –

3

내 머리의 몇 소수를 잃어버린 후, 나는이 문제를 해결 this Stackoverflow 답을 발견했다. 그러나 Visual Studio에서 대상 플랫폼으로 x86.Net Framework 4 클라이언트 프로필을 대상 프레임 워크로 사용하는 Windows 서비스를 추가하는 이유는 무엇입니까?

0

솔루션이 빌드되었는지 확인하십시오. 솔루션> 속성> 구성 속성을 마우스 오른쪽 버튼으로 클릭하면됩니다. 모든 솔루션이 빌드되었는지 확인하십시오.

관련 문제