2011-12-13 3 views
1

테스트 프로젝트에서 NuGet 패키지 참조를 사용하여 팀 도시에서 빌드를 설정했습니다.NuGet 패키지가있는 팀 도시 빌드

내가 사용한 폴더 structre는

\ 
|- Project1 
    \- Project1.csproj 
|- Project1.Test 
\- Project1.Test.csproj 
|- packages 
\- lib 
    \- RhinoMocks 

가 Project1의 프로젝트가 성공적으로 빌드이지만, 테스트 프로젝트는 ResolveAssemblyReferences 단계에 실패합니다. 상대 경로가 올바르지 않은 것 같습니다.

[13:16:55]: [ResolveAssemblyReference] C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360, 9): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Rhino.Mocks, Version=3.6.0.0, Culture=neutral, PublicKeyToken=0b3305902db7183f, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. 
[13:16:55]: [ResolveAssemblyReference]   For SearchPath "{HintPathFromItem}". 
[13:16:55]: [ResolveAssemblyReference]   Considered "..\packages\RhinoMocks.3.6\lib\Rhino.Mocks.dll", but it didn't exist. 

인 TeamCity 빌드 설정 :

  • 은 MSBuild 작업
  • 빌드 파일 경로 : Project1.Test \ Project.Test.csproj
  • 작업 디렉토리 : %의 system.teamcity.build.checkoutDir % \ Project1.Test
  • VCS 루트는 위의 폴더 구조의 루트를 가리 킵니다.

지금까지 MSBuild 문제 일 수 있음을 알 수 있듯이 MSBuild를 빌드 에이전트의 체크 아웃 폴더에있는 명령 줄에서 실행할 때도 동일한 오류가 발생합니다.

추가 정보 : 힌트 경로는 Nuget 패키지 구성에 의해 제공됩니다. Visual Studio 내에서 패키지 참조가 올바르게 작동합니다. 그러나 MSBuild를 통해 실행할 때 현재 디렉토리에 대해 혼란스러워 보입니다. .. \ packages ... 경로는 실제로 Nuget의 축 어적 인 참조 경로입니다.

답변

0

강력한 어셈블리 이름 (버전 등)과 힌트 경로가있는 혼합 참조가 있습니다. 어셈블리가 컴퓨터의 GAC에있는 경우 힌트 경로가 잘못되어 있어도 어셈블리가 배치됩니다. 빌드 시스템의 GAC에 없으면 찾을 수 없습니다. 프로젝트 파일을 체크인하고 참조에있는 HintPath 메타 데이터가 올바른 경로인지 확인하십시오 (출력에 나타나는 것 대신 ".. \ packages \ lib \ RhinoMocks ..."여야합니다)

IFS의 무리는 더 이상 아이디어를 내가 실패 프로젝트 파일 안에 뭐가 있는지보고해야 할 것

1

나는 당신의 프로젝트 구조의이 부분에 대한 혼란 스러워요 :.

|- packages 
\- lib 
    \- RhinoMocks 

이 shouldn ' NuGet에서 패키지를 가져 오려면 필요합니다. "packages"아래의 소스 컨트롤에 체크인해야하는 유일한 파일은 repositories.config입니다.

또한 TeamCity에서 MSBuild를 실행하면 관련 NuGet 종속성을 어떻게 다운로드하고 있습니까? TeamCity "NuGet Installer"를 통하거나 아니면 솔루션/프로젝트가 자동 실행되는 너겟 설치를 구성 했습니까?

+0

나는 당신의 제안을 조사 할 것이다. 나는 무엇을 검사해야하는지, 검사하지 말아야하는지, 그리고 Nuget Installer의 존재를 알지 못했습니다. – benPearce

관련 문제