2

Nuget의 새로운 자동 패키지 복원으로 마이그레이션하려고합니다. 내 컴퓨터에서 제대로 작동하지만 (패키지가 복원 됨) 빌드 서버에서 TFS 빌드로 수행되는 빌드는 빌드하지 않으며 다양한 dll (복원의 일부로 다운로드해야 함)을 찾을 수 없다는 불평을합니다. 여기에 지정된Nuget 자동 복원 - TFS 빌드 용 사용자 지정 리포지토리 지정

나는, 내 솔루션 폴더에 nuget.config을 만든 : 나는 또한에, TFS에 nuget.exe 파일 옆에이 nuget.config 파일을 넣어 시도

http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html

그것이 사용되지만, 쓸데없는 희망. 여기

nuget 참조 :

http://docs.nuget.org/docs/reference/nuget-config-file

내 솔루션 폴더에 nuget.config 픽업해야한다고 주장한다. 그러나 그것은 그렇지 않은 것처럼 보입니다.

나는 내 밧줄 끝에 있습니다. nuget에 따르면 패키지 복원 기능은 패키지를 체크인 할 필요가 없도록 특별히 설계되었지만 패키지를 실제로 복원하기 위해 TFS를 얻는 방법에 대한 정보가 부족하며 발견 한 내용이 작동하지 않습니다.

도움을 주시면 감사하겠습니다.

내 nuget.config은 다음과 같습니다 : Visual Studio 버전에 따라

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <solution> 
    <add key="disableSourceControlIntegration" value="true" /> 
    </solution> 
    <packageSources> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    <add key="ads" value="<address to local repository>" /> 
    </packageSources> 
</configuration> 
+0

MSBuild를 사용하지 않는 새로운 자동 패키지 복원은 Visual Studio에 내장되어 있습니다. 아마도 TFS는 Visual Studio를 사용하여 솔루션을 구축하지 않을 것입니다. "Nuget Restore YourSolution.sln"을 실행하는 TFS에서 미리 빌드 단계를 설정할 수 있는지 확인합니다. MSBuild 기반 패키지 복원을 사용하고 싶지 않다고 가정합니다. –

+1

맞습니다 - 그게 문제였습니다. "사전 빌드"단계는 생성해야하는 사용자 정의 빌드의 일부입니다. 빌드 정의의 일부로 사전 빌드 단계를 설정하는 방법이 있다면 유용 할 수도 있지만 볼 수는 없습니다. – bornfromanegg

+0

[link] http://docs.nuget.org/consume/package-restore/team-build 링크의 내용에 문제가 있습니다. 모든 패키지를 복원하지만 솔루션을 빌드하려고하지는 않습니다. 더 나아가 msbuild의 출력 결과는 다음과 같습니다. "C : \ Builds \ 1 \ Services \ MyProject \ src \ tools \ NuGet \ NuGet.exe"복원 "" 왜 빈 문자열입니까? 왜 .sln 폴더를 찾지 못했습니까? DID는 src 아래 패키지 폴더에 패키지를 복원합니다. 또한 솔루션을 수동으로 빌드하려고하면 패키지 내부를 찾을 수 없다는 오류가 발생합니다. 내가 뭘 잘못하고 있는거야? –

답변

3

종종 자주 묻는 것처럼 대답은 내가 실제로 묻지 않은 질문에 대한 대답입니다.

"TFS는 어떻게 너겟을 호출하는 방법을 알고 있습니까?"

잠시 동안 앉아서 생각한 후 (@Matt Ward가 올바르게 지적한 것처럼) 새로운 "자동"패키지 복원이 제거되기 때문에 TFS Build가 Nuget이 관련되어 있다는 것을 알 수 없었습니다. 그것 자체가 빌드 자체의 일부가 될 필요가있다.

이 질문은 실제로 여기에 요청되었습니다 허용 대답은 실제로는 올바른 일이 아니다

How does TFS know about nuget?

있지만. 본질적이다 probackpacker의 대답은, 아래로 스크롤 :

이 실제로 잘 nuget에 설명되어 있습니다

"당신이 자동 패키지 복원을 사용하는 경우, 당신은 당신의 솔루션을 구축하기 전에 호출하는 빌드 프로세스가 있어야합니다"

http://docs.nuget.org/docs/reference/package-restore-with-team-build

그러나, 나는) 자동 패키지의 전체 지점 복원이 다른 이유 지금은) 이해 않지만 (AN MSBuild를 기반 프로세스에서 멀리 이동하기 때문에 그것을 무시하고 있었다 B)를 내가 필요한 것보다 더 복잡해 보였다. 그렇지 않습니다. 즉, "TFS Team Build로 자동 패키지 복원을 사용하는 경우 패키지 복원을 호출하기 위해 MSBuild 프로젝트를 만들어야합니다"와 같은 명확한 설명이 도움이되었을 것입니다. 어떤 일이 일어 났는지 이해하면 분명합니다. 그렇지 않을 때 혼란스러워 할 것입니다. 그러나 우리는 살고 배웁니다.

-1

, 그냥 솔루션에 마우스 오른쪽 버튼으로 클릭의 문제 일 및 NuGet 패키지 복원 사용을 선택해야한다. 이렇게하면 NuGet.exe, NuGet.Targets 파일 및 NuGet.config가 포함 된 Nuget 폴더가 만들어집니다.

로컬 NuGet 피드가 있으면 대상 파일을 업데이트 할 수 있습니다.

로컬로 테스트하고 패키지 폴더의 내용을 삭제 한 다음 솔루션을 Rebuild하면 NuGet에서 파일을 다운로드하고 솔루션이 올바르게 빌드됩니다. 소스 컨트롤에 NuGet 폴더와 파일을 체크 인하면 패키지가 소스 컨트롤에 추가되어서는 안됩니다.

당신의 TFS 빌드 이제 패키지 지금

NuGet Restore

을 복원 할 수 있어야이 사용자가 설정하는 방법이며 여전히 TFS에 작업과 빌드 서버에 로그인하지 않는 경우 계정을 구축하고 솔루션을 로컬로로드하고, 패키지 복원이 빌드 시스템의 빌드 계정으로 작동하는지 확인하십시오. 빌드 서버/빌드 계정이 Nuget.org 인터넷 사이트에 액세스 할 수없는 방화벽/프록시 문제가있을 수 있습니다.

+1

고마워요,하지만 그것은 오래된 MSBuild 기반 패키지 복원입니다. 내 질문에 언급했듯이, 나는 이것을 필요로하지 않는 nuget의 새로운 Automatic Package Restore로 마이그레이션하려고 시도하고있다. – bornfromanegg

+0

충분히 공정하지만 컴퓨터에서 이미 작동하고 있다면 서버 빌드를 계속 확인합니다. –

관련 문제