【问题标题】:build UWP app with Cake使用 Cake 构建 UWP 应用
【发布时间】:2018-03-22 04:43:26
【问题描述】:

我正在尝试使用 Cake 构建一个 UWP 应用程序(使用 VS2017 创建)。 我在构建阶段遇到了几个“无法加载文件或程序集 System.Private.CoreLib....”异常。

重现步骤: 在 ./src 目录下的 VS2017 中创建名为“Example”的 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]

【问题讨论】:

标签: visual-studio uwp cakebuild


【解决方案1】:

我能够重现您的错误。当我意识到 MSBuild 从命令行默认为 x64 版本时,这个post 揭示了这个问题。通过将 MSBuild 平台显式设置为 x86 版本,我能够使用 Cake DSL 解决这个问题。以下是我用来让它工作的设置。

来自 MSDN:

使用 Visual Studio 默认使用的 x86 构建工具。我们不建议使用 AMD64 MSBuild 工具,这些工具位于 C:\Program Files (x86)\MSBuild\12.0\bin\amd64;这些可能会产生构建问题。

注意:我明确设置了PlatformTarget,因为那是我遇到的下一个构建错误。

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

【讨论】:

    猜你喜欢
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多