2016-08-22 1 views
2

제 Xamarin 프로젝트에 Cake 빌드를 설정하려고합니다. Windows에서는 완벽하게 작동하지만 OS X에서는 실패합니다 (El Captain). build.sh is here, build.cake is here.OS X에서 케이크 빌드가 실패하고 msbuild.exe를 찾을 수 없습니다.

MSBuild auto-detection: using msbuild version '4.0' from '/Library/Frameworks/Mono.framework/Versions/4.4.2/lib/mono/4.5'. 
MsBuild.exe does not exist at '/Library/Frameworks/Mono.framework/Versions/4.4.2/lib/mono/4.5/msbuild.exe'. 
An error occured when executing task 'Restore-NuGet-Packages'. 
Error: NuGet: Process returned an error (exit code 1). 

./build.sh -v "진단"제공 :

빌드 NuGetRestore에 함께이 메시지를 실패

Executing: /Users/artur/sources/xamarin-range-slider/tools/NuGet.exe restore "/Users/artur/sources/xamarin-range-slider/Xamarin.RangeSlider.sln" -Verbosity detailed -NonInteractive 
MSBuild auto-detection: using msbuild version '4.0' from '/Library/Frameworks/Mono.framework/Versions/4.4.2/lib/mono/4.5'. Use option -MSBuildVersion to force nuget to use a specific version of MSBuild. 
MSBuild P2P timeout [ms]: 120000 
System.AggregateException: One or more errors occurred. ---> NuGet.CommandLineException: MsBuild.exe does not exist at '/Library/Frameworks/Mono.framework/Versions/4.4.2/lib/mono/4.5/msbuild.exe'. 
    at NuGet.CommandLine.MsBuildUtility.GetProjectReferences (System.String msbuildDirectory, System.String[] projectPaths, Int32 timeOut) <0x34e8ed0 + 0x00677> in <filename unknown>:0 
    at NuGet.CommandLine.RestoreCommand.DetermineRestoreInputs() <0x3452690 + 0x002af> in <filename unknown>:0 
    at NuGet.CommandLine.RestoreCommand+<ExecuteCommandAsync>d__23.MoveNext() <0x3451688 + 0x0028b> in <filename unknown>:0 
    --- End of inner exception stack trace --- 
    at System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) <0x1d1d960 + 0x00049> in <filename unknown>:0 
    at System.Threading.Tasks.Task.Wait (Int32 millisecondsTimeout, CancellationToken cancellationToken) <0x1d1f150 + 0x000c8> in <filename unknown>:0 
    at System.Threading.Tasks.Task.Wait() <0x1d1ef70 + 0x00033> in <filename unknown>:0 
    at NuGet.CommandLine.Command.Execute() <0x343a298 + 0x00213> in <filename unknown>:0 
    at NuGet.CommandLine.Program.MainCore (System.String workingDirectory, System.String[] args) <0x718cc0 + 0x005e0> in <filename unknown>:0 
---> (Inner Exception #0) NuGet.CommandLineException: MsBuild.exe does not exist at '/Library/Frameworks/Mono.framework/Versions/4.4.2/lib/mono/4.5/msbuild.exe'. 
    at NuGet.CommandLine.MsBuildUtility.GetProjectReferences (System.String msbuildDirectory, System.String[] projectPaths, Int32 timeOut) <0x34e8ed0 + 0x00677> in <filename unknown>:0 
    at NuGet.CommandLine.RestoreCommand.DetermineRestoreInputs() <0x3452690 + 0x002af> in <filename unknown>:0 
    at NuGet.CommandLine.RestoreCommand+<ExecuteCommandAsync>d__23.MoveNext() <0x3451688 + 0x0028b> in <filename unknown>:0 <--- 

An error occured when executing task 'Restore-NuGet-Packages'. 
Error: Cake.Core.CakeException: NuGet: Process returned an error (exit code 1). 
    at Cake.Core.Tooling.Tool`1[TSettings].ProcessExitCode (Int32 exitCode) <0x3a8b208 + 0x000fb> in <filename unknown>:0 
    at Cake.Core.Tooling.Tool`1[TSettings].Run (Cake.Core.Tooling.TSettings settings, Cake.Core.IO.ProcessArgumentBuilder arguments, Cake.Core.IO.ProcessSettings processSettings, System.Action`1 postAction) <0x3a34a88 + 0x00177> in <filename unknown>:0 
    at Cake.Core.Tooling.Tool`1[TSettings].Run (Cake.Core.Tooling.TSettings settings, Cake.Core.IO.ProcessArgumentBuilder arguments) <0x3a34a48 + 0x0002f> in <filename unknown>:0 
    at Cake.Common.Tools.NuGet.Restore.NuGetRestorer.Restore (Cake.Core.IO.FilePath targetFilePath, Cake.Common.Tools.NuGet.Restore.NuGetRestoreSettings settings) <0x3a34328 + 0x0004b> in <filename unknown>:0 
    at Cake.Common.Tools.NuGet.NuGetAliases.NuGetRestore (ICakeContext context, Cake.Core.IO.FilePath targetFilePath, Cake.Common.Tools.NuGet.Restore.NuGetRestoreSettings settings) <0x3a33f18 + 0x0012f> in <filename unknown>:0 
    at CakeBuildScriptImpl.NuGetRestore (Cake.Core.IO.FilePath targetFilePath, Cake.Common.Tools.NuGet.Restore.NuGetRestoreSettings settings) <0x3a33ed8 + 0x0002b> in <filename unknown>:0 
    at CakeBuildScriptImpl+<Execute>c__AnonStorey0.<>m__0() <0x3a33e40 + 0x00087> in <filename unknown>:0 
    at Cake.Core.CakeTaskBuilderExtensions+<>c__DisplayClass4.<Does>b__3 (ICakeContext context) <0x3a33e20 + 0x00014> in <filename unknown>:0 
    at Cake.Core.ActionTask.Execute (ICakeContext context) <0x3a33d68 + 0x00059> in <filename unknown>:0 
    at Cake.Core.DefaultExecutionStrategy.Execute (Cake.Core.CakeTask task, ICakeContext context) <0x3a33b18 + 0x00162> in <filename unknown>:0 
    at Cake.Core.CakeEngine.ExecuteTask (ICakeContext context, IExecutionStrategy strategy, System.Diagnostics.Stopwatch stopWatch, Cake.Core.CakeTask task, Cake.Core.CakeReport report) <0x3a33538 + 0x00099> in <filename unknown>:0 
+1

과 알려진 문제가 될 것 같다/NuGet/가정/문제/3085 – jzeferino

+0

@jzeferino 감사합니다! –

답변

1

이 가능성이 높습니다 경로에 NuGet.exe에 버전 때문에 그것은 모노를 인식하지 못한 것입니다.

build.sh -v "Diagnostic"을 실행하면 복원 작업을 위해 NuGet 명령 줄이 호출되는 방식에 대한 자세한 로그가 제공됩니다.

는에도 NuGetRestore(FilePath, ​NuGetRestoreSettings)​에 대한 과부하가 년대 NuGetRestoreSettings는 NuGet 명령 행에서 더 자세한 로깅을 얻기 위해 DetailedVerbosity 속성을 설정할 수 있습니다.

프로젝트 도구 폴더의 nuget.exe가 아닌 경우 부트 스트 래퍼를 변경하여 경로의 첫 번째 도구 폴더를 추가 할 수 있습니다. 당신은 그냥 그 이론을 테스트하려는 경우 (당신은 또한 NuGetRestoreSettings에 ToolsPath 속성을 설정할 수 있습니다.

이 NuGet.exe의 경로를 실행중인 경우, 인수 (mono ./tools/nuget.exe)없이 nuget을 실행하여 당신이 nuget의 버전을 확인합니다. . https://github.com : 참고로

이 NuGet 콘솔, 참조 GitHub의 문제 GitHub의에 대한 개방 문제가 매우 도움이되지 않음 지금하지만, 계속 지켜봐 주시기 바랍니다 NuGet/Home#3085

+0

NuGet 버전 : 3.4.4.1321 –

+0

업데이트 된 게시물, 광고 ded 진단 출력. –

+0

이것을 너겟 복원에 추가하십시오 :'NuGetRestore (solutionFile, new NuGetRestoreSettings {Verbosity = NuGetVerbosity.Detailed});'. 필자의 출처를 테스트 한 결과 같은 문제가 발생했습니다. 내 코드에서 복구 코드가있는 작업 코드가 있습니다. 나는 이것이 너겟 버전과 관련이 없다고 생각한다. – jzeferino

관련 문제