2017-03-11 2 views
6

VS 2017 빌드 에이전트를 설치하고이를 '기본'에이전트 큐에 등록했습니다. 빌드하려고하는 프로젝트는 .Net 표준 1.0을 대상으로하는 VS 2017 클래스 라이브러리 프로젝트입니다. Visual Studio에서 빌드 할 때 빌드가 성공합니다. 그러나 빌드 에이전트에서 빌드가 실패합니다.Visual Studio 2017 빌드 에이전트가 오류 cs0400으로 빌드하지 못했습니다.

T16 : 05 : 59.0389362Z ## [오류] C : \ WINDOWS \ ServiceProfiles \ NetworkService와 \의 AppData \ 로컬 \ Temp.NETStandard, 버전 = v1.0.AssemblyAttributes.cs (4,20) : 오류 CS0400 : 형식 또는 네임 스페이스 이름 'System'을 전역 네임 스페이스에서 찾을 수 없습니다 (어셈블리 참조가 누락 되었습니까?)

빌드 로그를 로컬 빌드와 비교하면 빌드 에이전트가 호출하는 것을 볼 수 있습니다. 누락 된 '참조'속성이있는 csc.exe 내 프로젝트에는 명시적인 참조가 없습니다. .NET 표준 1.0 라이브러리 (SDK) 만 있으면됩니다. 빌드 에이전트가 사용 명령 줄은 다음과 같습니다

\ MSBuild에서 15.0 \ 빈 \ 로슬린 \ \에는 Csc.exe /에서 noconfig/unsafe-/checked-/nowarn : 1701,1702,1705/nostdlib +/errorreport : 프롬프트/warn : 4/define : TRACE; RELEASE; NETSTANDARD1_0/debug-/debug : portable/filealign : 512/nologo/optimize + /out:obj\Release\netstandard1.0.Geo.Common.dll/ruleset : "C : \ 프로그램 파일 (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Team Tools \ 정적 분석 도구 \ 규칙 집합 \ MinimumRecommendedRules.ruleset "/ target : library/warnaserror-/utf8output/deterministic + Distance.cs DistanceExtensions.cs GeoCoordinate.cs Unit. cs "C : \ Windows \ ServiceProfiles \ NetworkService \ AppData \ Local \ Temp.NETStandard, 버전 = v1.0.AssemblyAttributes.cs"obj \ Release \ netstandard1.0 \ Geo.Common.AssemblyInfo.cs

빌드 정의에서 빌드 단계의 명령 줄 특성으로 '참조'목록을 하드 코딩 할 수 있다는 것을 알고 있지만 해결 방법입니다. 이 문제를 해결하는 올바른 방법은 무엇입니까?

감사합니다.

UPDATE 는 실패의 이유는 빌드 정의의 이전 단계의 NuGet이이 nuget.exe의 3.5 버전을 사용하고 복원한다는 것을 밝혀졌다. 프로젝트 파일이 VS 2017 형식이므로 nuget.exe는 참조 된 패키지를 찾을 수 없으므로 실제로 아무것도 넣지 않고 성공적으로 완료했습니다. 따라서 다음 단계에서 빌드가 NuGet 패키지로 실패했습니다 (따라서 모든 어셈블리)는입니다.

솔루션

나는 다운로드 nuget.exe 4.0 (here을 발견)와 에이전트의 작업 디렉토리에 저장합니다 (D : \ VsAgentWork \ nuget.exe 내 경우에는). 그런 다음 제공된 위치 (.... \ nuget.exe)에서 nuget.exe를 참조하기 위해 NuGet Restore 단계를 사용자 지정했습니다.

+0

당신이 "기본"큐 말했다 때문에, 당신은 확인할 수 있습니다 그건 당신이 사설 에이전트를 사용하고 있다는 것을 의미합니까? 또는 호스팅 된 풀을 사용하고 있습니까? 또한, 빌드 def에 어떤 작업이 있습니까? VS 빌드 작업? 그렇다면 드롭 다운에서 어떤 버전이 선택됩니까? – bryanmac

+0

또한 VSTS 또는 TFS 2015/2017을 사용하고 있습니까? RTM/QU1? – bryanmac

+0

개인 에이전트를 사용하고 있습니다. VisualStudio.com 온라인입니다. – Artak

답변

2

솔루션 패키지를 복원해야합니다. .NET 코어의 경우 dotnet cli 또는 MSBuild/t : 복원 대상으로 수행하거나 Nuget 사이트에서 NuGet 4를 다운로드하여 빌드 시스템에 저장하고 NuGet 설치 프로그램의 경로에 지정할 수 있습니다 태스크.

+0

크리스, 고맙습니다. 오늘 밤 나중에 다시 시도하겠습니다. – Artak

+0

귀하의 응답이 조사를 계속하기위한 좋은 시작점으로 사용되었으므로이를 "답변"으로 표시합니다. 그러나 위의 질문에 대해 자세히 설명 할 것이므로 다른 사람들은 실제로 어떤 일이 일어 났는지 그리고 어떻게 고쳐 졌는지 알 수 있습니다. – Artak

0

나는 VS2017에서도 이것을 경험했다. 버그 인 것 같다.첫 번째 인스턴스에서

은 VS를 다시 시작하지만 전체 단계가 때때로 문제를 해결하는 데 필요한 찾았어요 :
  • 가 삭제 .vs/ 폴더를 삭제

    1. 닫기 VS
    2. 어떤 bin/obj/ 폴더
    3. VS를 다시로드하고 다시 실행하십시오.
  • +0

    답변 해 주셔서 감사합니다. Nick. 그러나 문제는 Visual Studio에서 아닙니다. 괜찮아요. 그것은 Windows 빌드 에이전트 문제입니다. – Artak

    0

    이 동일한 문제가 있고, 그 자체가 그것을 고정 빌드하기 전에

    dotnet restore 
    nuget restore xyz.sln 
    

    nuget restore xyz.sln 
    

    로 전환.

    관련 문제