2017-10-10 8 views
1

J'essaye de construire une application UWP (créée avec VS2017) avec Cake. Je reçois plusieurs "impossible de charger le fichier ou l'assembly System.Private.CoreLib ...." lors de la phase de construction.construire l'application UWP avec Cake

Étapes pour reproduire: Créer application UWP nommé "Exemple" dans VS2017 sous ./src dir et après l'utilisation de script gâteau pour construire:

#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); 

// Mise à jour:

premières déclarations du journal dans la phase de construction:

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. 

la première erreur ressemble à ceci:

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

Si vous lancez gâteau avec verbosité de diagnostic, vous pouvez voir que c'est en utilisant MSBuild 15.x? https://stackoverflow.com/a/38658796/5883153 – devlead

+0

y il semble utiliser MSBuild 15 – jannikb

Répondre

2

J'ai été capable de reproduire votre erreur. Cette post est ce qui a éclairci le problème quand j'ai réalisé que MSBuild était par défaut à la version x64 de la ligne de commande. J'ai été en mesure d'utiliser Cake DSL pour résoudre le problème en définissant explicitement la plate-forme MSBuild à la version x86. Voici les paramètres que j'ai utilisés pour le faire fonctionner.

De MSDN:

Utilisez les x86 construire des outils qui sont utilisés par défaut par Visual Studio. Nous ne recommandons pas d'utiliser les outils AMD64 MSBuild, qui se trouvent dans C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ amd64; ceux-ci peuvent créer des problèmes de construction.

Note: je définir explicitement la PlatformTarget parce que c'était l'erreur de construction très prochaine je rencontrais.

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