2017-10-17 8 views
1

Versucht, eine Windows 8.1 Store App mit msbuild zu erstellen, aber einen Fehler zu erhalten. Dies ist meine erste Schlacht mit msbuild und ich hatte nicht viel Glück mit der Dokumentation, da alles scheint UWP spezifische Dinge zu hebeln. Der Fehler ich liest immerMSBuild fehlgeschlagen. Fehlende Version/WinRTXamlToolkit

C: \ git \ adr \ win8app \ src \ AppDataRoom.WinRT.Adr \ AppDataRoom.WinRT.Adr.csproj“(Standard-Ziel) (1) -> (_GenerateAppxPackageRecipeFile Ziel) -> C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets (2156,5): Fehler APPX0702: Payload-Datei 'C: \ app \ bin Release \ x64 \ \ WinRTXamlToolkit \ WinRTXamlToolkit.xr.xml‘do es nicht existieren.

gibt es 25 andere Fehler alle folgenden im Zusammenhang mit WinRTXamlToolkit Innenseite desfehltOrdner

Mein msbuild Befehl Ich renne ist:

msbuild .\app.csproj /p:Configuration="Release" /p:Platform="x64

Ich verstehe WinRTXamlToolKit ein nuget Paket ist, und ich kann die DLL innerhalb des Release-Ordner sehen, aber wie das, was ich tun, tun zu lösen dieser Fehler? Was vermisse ich?

+0

UPDATE: Wenn ich die WinRTXamlToolkit Ordner aus dem „/ packages“ -Ordner unter meinem root kopieren in "bin/x64/Release" ist der Build erfolgreich, aber gibt es eine Möglichkeit, auf den Ordner zu zeigen, anstatt ihn kopieren zu müssen? –

+0

Was ist die Version des Pakets 'WinRTXamlToolKit'? Da Sie die Windows 8.1 App erstellen, sollten Sie die Version 1.6.1.3 verwenden. Ich habe eine Windows 8.1 Store-App erstellt, das Paket 'WinRTXamlToolKit' mit der Version 1.6.1.3 hinzugefügt und dann mit der MSBuild-Befehlszeile erstellt, es funktioniert einwandfrei. Wenn Sie dieses Versionspaket verwenden, können Sie mir bitte einige Detailschritte mitteilen, damit ich dieses Problem reproduzieren kann? –

Antwort

1

Ich fand eine Lösung (obwohl es immer noch ein wenig hacky fühlt). Am Ende habe ich alles in ein Powershell-Skript verpackt. Das Skript stellt zunächst die nuget-Pakete für Projekte wieder her, nur für den Fall, dass es aus irgendeinem Grund nicht vorhanden ist. Dann kopiert das Skript den WinRTXamlToolKit-Ordner aus Paketen in den Ordner bin/x64/Release, und dann führe ich den MSBuild-Befehl aus, und jetzt scheint alles korrekt zu erstellen. Hier ist, was das Skript aussieht (ich schreibe nicht Powershell-Skripts sehr oft so können meine Konventionen nicht die beste sein)

#create some alias 

$nugetPath = $sourceControlRoot + ".nuget/nuget.exe"; 
$nugetPackagesPath = $sourceControlRoot + "/packages/"; 
$projectPath = $sourceControlRoot + "/TestingProject/" 
Set-Alias nuget $nugetPath 

#Nuget Restore 
$solutionPath = $sourceControlRoot + "/TestingProject.sln" 
nuget restore $solutionPath 


#To Help MSBuild we need to copy the WinRTXamlToolkit into the bin/Release folders 
$winRtXamlToolkitPath = $nugetPackagesPath + "WinRTXamlToolkit.1.6.1.3/lib/netcore451/WinRTXamlToolkit" 
$copyOutput64 = $projectPath + "bin/x64/Release/WinRTXamlToolkit" 
$copyOutput86 = $projectPath + "bin/x86/Release/WinRTXamlToolkit" 
$testPath = $copyOutput64 

if (!(Test-Path $testPath)) { 
    Copy-Item $winRtXamlToolkitPath $copyOutput64 -recurse 
    Copy-Item $winRtXamlToolkitPath $copyOutput86 -recurse 
    Write-Output "WinRTXamlToolkit copied into bin folders" 
} 

#build the project 
$buildPath = $projectPath + "TestingProject.csproj" 
msbuild $buildPath /p:Configuration="Release" /p:Platform="x64" 
Verwandte Themen