2017-10-10 9 views
1

나는 케이크와 함께 UWP 애플 리케이션 (VS2017로 만든)를 만들려고 해요. 빌드 단계에서 "파일을로드 할 수 없거나 System.Private.CoreLib ...을 어셈블리 할 수 ​​없습니다."예외가 발생합니다.케이크와 UWP 애플 리케이션을 구축

단계 재현 :

#tool nuget:?package=NUnit.ConsoleRunner&version=3.4.0 

var target = Argument("target", "default"); 
var configuration = Argument("configuration", "Release"); 

var buildDir = Directory("./src/Example/bin") + Directory(configuration); 

Task("Clean") 
    .Does(() => 
{ 
    CleanDirectory(buildDir); 
}); 

Task("Restore-NuGet-Packages") 
    .IsDependentOn("Clean") 
    .Does(() => 
{ 
    NuGetRestore("./src/Example.sln"); 
}); 

Task("Build") 
    .IsDependentOn("Restore-NuGet-Packages") 
    .Does(() => 
{ 
    if(IsRunningOnWindows()) 
    { 
     MSBuild("./src/Example.sln", settings => 
     settings.SetConfiguration(configuration)); 
    } 
}); 

Task("Default") 
    .IsDependentOn("Build"); 

RunTarget(target); 

// 업데이트 :

처음 몇 로그 문 구축하는 ./src 디렉토리 사용 다음 케이크 스크립트에서 VS2017에서 "예"라는 UWP 응용 프로그램 만들기 빌드 단계에서 :

Executing task: Build 
Executing: "C:/Program Files (x86)/Microsoft Visual 
Studio/2017/Community/MSBuild/15.0/Bin/amd64/MSBuild.exe" /v:normal /p:Configuration="Release" /target:Build "C:/Users/jannik/Documents/Visual Studio 2017/Projects/example/src/Example.sln 
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Framework 
Copyright (C) Microsoft Corporation. All rights reserved. 

첫 번째 오류는 다음과 같습니다

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\VisualStudio\v15.0\AppxPackage\Microsoft.AppXPackage.Targets(1254,5): error MSB3816: Loading assembly "C:\Users\jannik\.nuget\packages\runtime. Private.Uri\4.0.2\runtimes\aot\lib\netcore50\System.Private.Uri.dll" failed. System.IO.FileNotFoundException: Could not load file or assembly 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7 r one of its dependencies. The system cannot find the file specified.\r [C:\Users\jannik\Documents\Visual Studio 2017\Projects\example\src\Example\Example.csproj] 
+0

, 당신은 MSBuild를 15.x를 사용하고 있음을 볼 수 있습니까? https://stackoverflow.com/a/38658796/5883153 – devlead

+0

y MSBuild 15를 사용하는 것으로 보입니다. – jannikb

답변

2

오류를 재현 할 수있었습니다. 이 post은 MSBuild가 명령 줄에서 x64 버전을 기본값으로 설정한다는 것을 깨달았을 때 문제를 밝혀내는 것입니다. MSBuild 플랫폼을 x86 버전으로 명시 적으로 설정하여 Cake DSL을 사용하여 문제를 해결할 수있었습니다. 아래는 내가 작동하도록 설정 한 설정입니다. MSDN에서

:

는 86 비주얼 스튜디오에서 기본적으로 사용되는 빌드 툴을 사용합니다. C : \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ amd64에있는 AMD64 MSBuild 도구는 사용하지 않는 것이 좋습니다. 이것들은 빌드 문제를 일으킬 수 있습니다.

참고 : 그게 내가 만난 바로 다음 빌드 오류가 있었기 때문에 내가 명시 적으로 PlatformTarget을 설정합니다. 당신이 진단 상세와 함께 케이크를 시작하면

settings .WithTarget("Publish") .SetVerbosity(Verbosity.Minimal) .UseToolVersion(MSBuildToolVersion.VS2017) .SetConfiguration(configuration) .SetMSBuildPlatform(MSBuildPlatform.x86) .SetPlatformTarget(PlatformTarget.x86) .WithProperty("AppxBundle","Always") .WithProperty("AppxBundlePlatforms","x86"))