2010-07-21 3 views
0

TeamCity를 빌드하여 프로젝트를 ../../bin/Release 또는 ../../bin으로 리디렉션하는 OutputPath 지시문이있는 솔루션을 빌드하려고합니다/Debug. 이 솔루션은 Visual Studio 2008에서 제대로 구축되지만 TeamCity가 솔루션을 빌드 할 때 참조 된 프로젝트의 어셈블리를 찾지 못하면 네임 스페이스 오류가 발생합니다 ('SomeReferencedAssembly'형식 또는 네임 스페이스 이름이 'AssemblyBeingBuilt'네임 스페이스에 없음).TeamCity를 설정하여 csproj 파일의 OutputPath 지시문을 따르십시오.

기본 위치에없는 어셈블리가있는 참조 된 프로젝트를 TeamCity에서 찾을 수있는 방법이 있습니까? 참조 된 프로젝트를 빌드 할 때 출력이 올바르게 지정되기 때문에 지시문을 이해합니다. 그 이후에 다른 프로젝트를 빌드하는 것은 그들이 의존하는 어셈블리를 찾지 못하는 것입니다.

답변

1

근거없는 참조가 제 3 자 (컴파일하지 않은 코드)입니까? 아니면 코드입니까?

제 3자인 경우, 당신이 가리키고있는 소스 제어 저장소 루트가 종속성도 체크 아웃되는 것을 확인해야합니다. (또는 악화, GAC에 넣거나 각 빌드 서버에 설치하는 것이 좋습니다. 그렇지 않은 경우 좋은 아이디어는 아닙니다.)

코드가 동일한 솔루션이나 다른 솔루션으로 프로젝트에서 빌드되는 경우?

하나의 프로젝트를 다른 프로젝트에 종속시킬 수있는 정도까지는 솔루션에서 빌드를 가리킬 정도로 좋은 일입니다.

두 가지 솔루션이있는 경우 종속성 (5 절)을 사용하여 Artifact 종속성을 설정해야합니다.

+0

모두 하나의 해결책이며 제 3 자 재료가 없습니다. 솔루션의 모든 프로젝트는 기본 "bin/$ (Configuration)"대신 "../../bin/$(Configuration)"으로 설정된 OutputPath 지시문 (모든 빌드 구성에 대해)을 갖습니다. 즉, 빌드 출력이 솔루션 구조 외부의 디렉토리에 삭제됩니다. VS는이 문제를 잘 처리하고 TC는 올바른 OutputPath를 빌드하지만 다른 프로젝트가 빌드되어 방금 OutputPath에 드롭 된 프로젝트에 종속 될 때 넘어집니다. – grenade

+0

종속 프로젝트는 의존하는 프로젝트의 어셈블리를 찾을 수 없습니다. 나는 TC가 어셈블리 참조를 해석 할 때 OutputPath 지시문을 따르도록 설계되지 않았다는 것이 문제라고 생각합니다. 내가 TC와 버그를 제기하고 그 동안 나는 당신의 유물 의존성 아이디어를 시도 할 것입니다. – grenade

1

teamcity에서 솔루션 러너를 사용하고 있습니까? 그렇다면 참조의 위치가 각 csproj에 지정됩니다. 추가 구성을 수행 할 필요가 없습니다.

참조가 어셈블리 참조가 아닌 프로젝트 참조인지 확인하십시오. 어셈블리 참조는 릴리스에서 컴파일 할 때 해결되지 않는 ../../bin/debug/assembly.dll을 가리킬 수 있습니다.

csproj에서 확인할 수 있습니다. 또는 Visual Studio에서 어셈블리 참조 속성의 '특정 버전'드롭 다운 만 표시합니다.

관련 문제