2012-09-25 2 views
1

세 가지 프로젝트가 포함 된 Visual Studio 2012 솔루션이 있습니다. 구조의 간단한 종속성 그래프이다 :왜 프로젝트 종속성이 최상위 어셈블리로 이동합니까?

  • ConsoleUI
    • 서브 프로젝트
      • Newtonsoft.Json.dll
      • RestSharp.dll
      • ...
    • .. .

ConsoleUI를 컴파일 할 때 RestSharp가 출력되지 않지만 Newtonsoft.Json이 내 응용 프로그램에 런타임 오류를 일으키는 문제가 있습니다.

SubProject의 프로젝트 속성에서 로컬 복사가 true로 설정되어 있는지 확인했습니다.

나는 완전한 청결을하고 아무 쓸모가 없어졌습니다.

누구나 ConsoleUI에서 필요한 어셈블리를 수동으로 포함하지 않고도 솔루션을 생각할 수 있습니까?

+0

모든 프로젝트가 2.0 및 4.5가 아닌 동일한 프레임 워크 버전인지 확인하고 "클라이언트 프로파일"을 사용하고 있는지 확인하십시오. –

답변

2

MSBuild에서 오랫동안 존재하던 것처럼 들립니다. 어떤 회합이 당신이 ConsoleUI을 기준으로 계산됩니다 빌드 할 때 실제로 로컬로 복사됩니다 : (이 경우 하위 프로젝트) 프로젝트의

  • 차 참조 자신의 참조에 대한 기본 참조에서
  • 모든 컴파일러 감지 참고 문헌이에 (case SubProject -> Newtonsoft.Json이 감지되었지만 * -> RestSharp가 아닙니다. 이 문제를 해결하기 위해

두 가지 방법은 다음과 같습니다 (다른 DLL을 당신의 통제 때문에)

  1. 컴파일러가 무시할 수없는 RestSharp에 하위 프로젝트에서 명시 적으로 호출을 추가합니다. 이것은 쓰레기 코드이므로 이상적인 것은 아닙니다.
  2. Restart를 ConsoleUI의 기본 참조로 만드십시오.
+0

많은 어려움에 처했을 때 나는 옵션 2. –

0

프로젝트 정리, RestSharp에 대한 참조 제거, Visual Studio 닫기, M binually & obj 폴더 수동 삭제. 그런 다음 프로젝트를 다시 시작하고 Nuget Package Reference를 추가하면 문제가 확실히 해결됩니다.

관련 문제