2013-04-26 2 views
2

프로젝트 A 참조 프로젝트 B. 프로젝트 B 참조 프로젝트 C. 프로젝트 A는 프로젝트 C를 참조하지 않습니다.VB.NET 솔루션의 간접 참조

이것은 로컬로 정밀하게 빌드됩니다. 그러나, 프로젝트 A는 프로젝트 C.

오류를 참조하지 않기 때문에 밖으로 빌드 서버 그것은 오류에 대한 :

error BC30009: Reference required to assembly 'ProjectC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' containing the implemented interface 'ProjectC.IFoo'. Add one to your project.

어떻게 커밋하기 전에이 잡을 수 있습니까?

편집 : 여기 http://sstjean.blogspot.com/2006/11/msbuild-cant-find-secondary-references.html

+0

정확한 오류는 무엇입니까? 또한 빌드 서버에서 다른 구성을 구축 할 수 있습니까? – SoftwareCarpenter

+0

예, 릴리스 구성 대 디버그 구성을 작성 중입니다. 정확한 오류 메시지로 OP를 수정하겠습니다. –

+0

업데이트 : 릴리스 구성을 사용하여 로컬로 빌드했으며 동일한 빌드 오류가 발생했습니다. 이제 구성의 차이를 알아 내려고합니다 ... –

답변

1

당신이 당신의 프로젝트가 제대로 참조하는 확인하기 위해 가장 좋은 방법으로 할 수 있으며, MSBuild를 올바르게 참조 프로젝트를 찾을 수있을 것 두 가지이다 : 여기 내 문제에 대한 자세한 정보입니다.

  1. dll을 참조하는 대신 프로젝트 참조를 사용하십시오. dependencies 또는 libs라는 폴더를 만들고 참조 된 dll을이 폴더에 넣습니다.

  2. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 프로젝트 빌드 순서를 선택하여 각 프로젝트의 빌드 순서 및 프로젝트 종속성 탭을 확인하십시오. 해당 프로젝트가 프로젝트의 모든 참조를 빌드하고 있는지 확인하십시오.

MSBuild는 .sln 파일이 무엇인지 알지 못합니다. MSBuild는 .sln 파일을 읽고 구문 분석하여 프로젝트의 빌드 순서를 결정합니다. 프로젝트 참조가 있으면 MSBuild는 올바른 순서로 프로젝트를 트래버스하고 빌드 할 수 있습니다. 자세한 내용은 아래 링크를 참조하십시오.

이 링크는 다른 동작과 왜 잡는지를 설명하는 데 도움이됩니다. 비주얼 스튜디오 내에서

Visual Studio Integration (MSBuild)

, 솔루션 파일과 프로젝트 빌드 순서는 비주얼 스튜디오 자체에 의해 제어됩니다. 명령 줄에 msbuild.exe를 사용하여 솔루션을 빌드 할 때 MSBuild는 솔루션 파일을 구문 분석하고 프로젝트 빌드를 주문합니다. 두 경우 모두 프로젝트는 종속 순서에 따라 개별적으로 구축되며 프로젝트 참조에 대한 프로젝트는 통과하지 않습니다. 반대로, 개별 프로젝트가 msbuild.exe로 빌드 될 때 프로젝트 참조에 대한 프로젝트가 통과됩니다.

Visual Studio에서 빌드 할 때 $ (BuildingInsideVisualStudio) 속성이 true로 설정됩니다. 이것은 프로젝트 또는 .targets 파일에서 사용되어 빌드가 다르게 동작하게 할 수 있습니다.

+0

첫 번째 문장은 저에게 행동에 아무런 차이가 없으므로 그 순간 +1을 드릴 수 없습니다. 귀하의 답변의 나머지 부분은 상당히 성공적으로 수정하려고 시도합니다. –

+0

프로젝트 참조 사용에 관한 문장? – SoftwareCarpenter

+0

내 답변을 편집해야하는 경우 알려주세요. – SoftwareCarpenter

관련 문제