2017-10-10 36 views
1

我在用Cake製作一個UWP應用程序(用VS2017製作)。 在構建階段,我收到了幾個「無法加載文件或程序集System.Private.CoreLib ....」的異常。用Cake製作UWP應用程序

重現步驟: 創建VS2017名爲 「示例」 ./src目錄和使用下面的蛋糕下的腳本來構建應用程序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); 

//更新:

前幾個日誌報表在構建階段:

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

它似乎使用MSBuild 15 – jannikb

回答

2

我能夠重現您的錯誤。這個post就是當我意識到MSBuild從命令行默認爲x64版本時發現的問題。我可以使用Cake DSL通過將MSBuild平臺明確設置爲x86版本來解決問題。以下是我用來使其工作的設置。

從MSDN:

使用x86版本所使用默認的Visual Studio工具。我們不推薦使用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"))