2014-11-14 2 views
3

이 문제를 해결하기 위해 도움을 얻고 싶습니다. 코드가 로컬 상자에서 컴파일되지만 프로젝트에서 TFS 빌드가 실패합니다. -TFS Online Build Fails - NuGet 패키지 복원 작동하지 않음

Entity \ DbModel.Context.cs (16) : 형식 또는 네임 스페이스 이름 'Entity'가 'System.Data'네임 스페이스에 없습니다 (당신은 어셈블리 참조가 누락)

엔티티 \ DbModel.Context.cs이 (19) : 형식 또는 네임 스페이스 이름 'DbContext'을 (를) 찾을 수 없습니다 (당신은 using 지시문 또는 어셈블리 참조가)

?

Entity \ DbModel.Context.cs (26) : 형식 또는 네임 스페이스 이름 'DbModelBuilder'을 찾을 수 없습니다 (사용 지시문 또는 어셈블리 참조가 누락 되었습니까?)

EntityFramework 6.1.1을 사용하고 있습니다. 프로젝트 및 패키지 복원에 대한 NuGet 패키지 (NuGet.targets 파일에) 사용 가능 -

<RestorePackages Condition=" '$(RestorePackages)' == '' ">true</RestorePackages> 

내가 EntityFramework의 패키지 다운로드가 같은 프로젝트의 다른 NuGet 패키지에도 불구하고 TFS에 실패하고 있다고 생각 TFS에서 빌드가 시작되기 전에 다운로드됩니다. 나는이 프로젝트에이 개 패키지를 사용하고

-

<packages> 
<package id="EntityFramework" version="6.1.1" targetFramework="net45" /> 
<package id="Newtonsoft.Json" version="6.0.6" targetFramework="net45" /> 
</packages> 

빌드 로그 파일 -

RestorePackages: 
    "C:\a\src\.nuget\NuGet.exe" install "C:\a\src\<project name>\packages.config" -source "" -NonInteractive -RequireConsent -solutionDir "C:\a\src\ " 
    Restoring NuGet packages... 
    To prevent NuGet from downloading packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages'. 
    Installing 'Newtonsoft.Json 6.0.6'. 
    Successfully installed 'Newtonsoft.Json 6.0.6'. 
    All packages listed in packages.config are already installed. 

그러나 Newtonsoft.Json 후, 그것도 EntityFramework DLL을 다운로드하지 않은

.

답변

2

마침내 제작했습니다. 그것은 시간이 좀 걸렸다. 사용할 수있는이 시점에서 , 2 가지 옵션 :

  1. 명시 적으로 호출

  2. 을 (나를 위해 작동하지 않았다)을 NuGet.targets 파일을 유지하고 모든 프로젝트에서 NuGet.targets가 해당 파일을 참조

    01 : NuGet.Exe 패키지 나를 위해 작동하지 않았다 빌드

옵션 1 일 이전에 복원, 그게 내가해야 할 일을했을 , 왜 두번째 옵션으로 앞서 가고 있어요

  1. 23,516,가 .nuget 폴더에서 NuGet.targets 파일 (해당 파일을 체크인하지 않는)

  2. 삭제를 삭제하고 모든 프로젝트는 메모장에서 파일을

  3. 열기를 파일 패키지에 확인하지 않고 도구> 확장 및 업데이트> 갤러리 VS - - VS 2013 http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

  4. 이동에 언급 한 바와 같이 NuGet.targets 파일의 참조를 제거 최신 NuGet

  5. 이 있는지 확인하십시오
  6. 이 시점에서 프로젝트는 패키지 빌드를 시작하기 전에 Nuget 패키지를 다운로드 할 준비가되었으며 패키지 폴더를 삭제하고 빌드를 시작하는지 테스트하기 위해 모든 NuGet 패키지를 다운로드해야합니다.

  7. 이제 TFS 연속 빌드의 경우 솔루션 파일을 빌드 템플릿에서 직접 가리키는 대신 http://blogs.msdn.com/b/dotnet/archive/2013/08/27/nuget-package-restore-with-team-foundation-build.aspx에서 설명한대로 사용자 지정 XML build.proj 파일을 사용하십시오.

  8. 이 XML 먼저 *의 .sln 파일이 언급되지 않은 경우,이

  9. 확인 build.proj에 같은 디렉토리에있는 다른 솔루션 파일을 선택합니다 NuGet.EXE 경로 \의의 .sln 파일을 복원 호출 , NuGet.exe는 솔루션 폴더와 함께 루트 폴더에 있습니다.

이제 TFS 온라인 CI를 사용하면 원활하게 진행될 수 있습니다. NuGet 패키지 복원을 사용하려면 Visual Studio 솔루션을 마우스 오른쪽 단추로 클릭하지 마십시오. NuGet.targets 파일을 가져오고 각 proj 파일의 파일로 직접 참조하기 때문에 위의 모든 작업이 취소됩니다.

관련 문제