Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 使用Cake构建UWP应用程序_Visual Studio_Uwp_Cakebuild - Fatal编程技术网

Visual studio 使用Cake构建UWP应用程序

Visual studio 使用Cake构建UWP应用程序,visual-studio,uwp,cakebuild,Visual Studio,Uwp,Cakebuild,我正在尝试用Cake构建一个UWP应用程序(使用VS2017创建)。 在构建阶段,我遇到了几个“无法加载文件或程序集System.Private.CoreLib…”异常 复制步骤: 在VS2017中的./src dir下创建名为“Example”的UWP应用程序,并使用以下脚本构建: #tool nuget:?package=NUnit.ConsoleRunner&version=3.4.0 var target = Argument("target", "default"); var

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

复制步骤: 在VS2017中的./src dir下创建名为“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]

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

从MSDN:

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

注意:我显式设置了
PlatformTarget
,因为这是我遇到的下一个构建错误


设置
.WithTarget(“发布”)
.SetVerbosity(Verbosity.Minimal)
.UseToolVersion(MSBuildToolVersion.VS2017)
.SetConfiguration(配置)
.SetMSBuildPlatform(MSBuildPlatform.x86)
.SetPlatformTarget(PlatformTarget.x86)
.WithProperty(“AppxBundle”、“Always”)
.WithProperty(“AppXBundlePlatform”、“x86”))

如果启动带有诊断详细信息的Cake,您能看到它使用的是MSBuild 15.x吗?y它似乎使用了MSBuild 15